python下几种打开文件的方式(你习惯的不一定是最好的)

python下几种打开文件的方式(你习惯的不一定是最好的)python下打开文件的几种方式,以及优先推荐使用的写法。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

昨天看完了这本python进阶,感觉这本书对我启发很大,做了三张纸的笔记,方便我在遇到问题的时候翻阅,然后寻找可能的解决方案。作为一个使用python一年的小白,虽然说不是小白,但是这一年来基本上是用什么学什么,对python没有系统的学习过,900多页的厚书看了三分之一就放弃了,所以对python的一些pythonic的东西不太了解,对其很多自带的方法都不知道,很多很好的方法都从来没有使用过,现在回过头来看看,自己的python代码确实冗余度很高,一点都不pythonic。所以说,还是有必要看一遍python的书的,起码做到通读一遍,对平常的开发也是很有帮助的。


正文

python下打开文件超级简单,不用导入任何包,直接输入f = open('your_file.txt', 'r')就可以打开一个文件进行操作。

其中,第二个参数为对文件的操作方式,有以下几种选项:

  • ‘w’是写文件,已存在的同名文件会被清空,不存在则会创建一个;
  • ‘r’是读取文件,不存在会报错;
  • ‘a’是在文件尾部添加内容,不存在会创建文件,存在则直接在尾部进行添加;
  • ‘wb’是写二进制文件;
  • ‘rb’是读取二进制文件,比如图片之类的。

但是这种方式并不是打开文件的最好方式,可能会出现如下问题

  1. 未指定文件编码格式,如果文件编码格式与当前默认的编码格式不一致,那么文件内容的读写将出现错误;
  2. 如果读写文件有错误,会导致文件无法正确关闭。因为哪怕在后面有
    f.close()语句,但是如果在打开时就出现错误,则会出现问题。

因此,一般来说,不推荐这种打开文件的方式,下面针对这两个问题提出解决思路。


问题1

上述问题1是python2下的,在python3open函数可以通过encoding参数指定编码方式,示例如下:

f = open('your_file.txt', 'r', encoding='utf-8')

如果想要让代码在python2python3下都兼容的话,可以尝试下面的两种方法:

import codecs
f1 = codecs.open('your_file1.txt', 'r', 'utf-8') #使用codecs包
f1.close()
import io
f2 = io.open('your_file2.txt', 'r', encoding='utf-8') #使用io包
f2.close()

问题2

上述方式都有瑕疵,下面是最推荐的一种打开文件的方式:

import codecs  # 或者io,使用哪种包无所谓
with codecs.open('your_file.txt', 'r', 'utf-8') as f:
	f.write('This method is prior')

使用with这种上下文环境的方式打开文件,在对文件操作完成后无需通过close()关闭文件,文件会自动关闭,而且安全系数更高。


以上。欢迎交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184109.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码最新教程2023.2.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.2.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 2 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 2 3 成功激活

    2025年5月27日
    3
  • datagrip 2021 mac 激活码(在线激活)

    datagrip 2021 mac 激活码(在线激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    124
  • 电赛校赛-三相逆变电源设计(单片机部分–C52仿真测频+串口发送机与串口接收机)

    电赛校赛-三相逆变电源设计(单片机部分–C52仿真测频+串口发送机与串口接收机)本文主要介绍C52符合题目测量指标的测量方案

    2022年6月10日
    36
  • 情感词典文本情感分析_情感名词

    情感词典文本情感分析_情感名词基于情感词典的文本情感分类传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图。我们首先通过学习来记忆一些基本词汇,如否定词语有“不”,积极词语有“喜欢”、“爱”,消极词语有“讨厌”、“恨”等,从而在大脑中形成一个基本的语料库。然后,我们再对输入的句子进行最直接的拆分,看看我们所记忆的词汇表中是否存在相应的词语,然后根据这个词语的类别来判断情感,比如“我喜欢数学”,“喜

    2022年8月23日
    9
  • vimrc简易配置

    vimrc简易配置最近在练习写脚本,但格式老搞得我头疼,查了半天发现了vimrc;在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能。环境是centos7.6的系统直接修改即可vim~/.vimrc不过我的位置在另一个地方(估计是系统不一样吧)vim/etc/vimrcsetnu#显示行数syntaxenabl…

    2022年6月6日
    61
  • jlink 与 swd 接口定义

    jlink 与 swd 接口定义1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号