今天继续给大家介绍Python相关知识,本文主要内容是Python文件操作注意事项。
一、文件操作流程注意事项
在文章Python文件操作详解(一)中,我们讲解过,文件操作的流程是打开文件——操作文件——关闭文件。如果我们在操作完文件后,没有关闭文件,那么该文件就会被该程序所占用(关于文件占用可参考本文第三章)。但是如果Python程序被关闭,那么Python也会自动关闭我们打开的文件。
为了解决这一问题,我们可以使用with关键字,with关键字可以帮助我们自动的关闭文件,并且当文件操作失败(有时文件因为被别的程序占用、权限问题等,因此会打开失败)或者使用结束后,自动关闭文件。with关键字使用示例如下:
with open("test.txt","r+") as f:
【处理文件操作】
在上述示例中,我们将open()函数放在with关键字后面,最后的f是执行open()函数后,打开的文件句柄。注意上述语句最后面的冒号,以及后续处理文件操作中需要的缩进。
注意,我们尽量不要把打开文件的操作放到try except异常处理语句中,因为try except语句当文件处理出现异常后,不会自动关闭文件。
二、文件读取时的编码问题
对于文本方式打开的文件,会存在一个固定的字符编码。例如,我们在Windows操作系统的记事本,就可以在另存为操作时指定文件的编码,如下所示:
我们使用文本方式打开不同编码类型的文件,就必须指定文件的编码类型,常见的编码类型有gbk和utf-8,打开这两种编码类型的文件需要在open函数中指定encoding参数,如下所示:
f=open("test.txt","r+",encoding="utf-8")
f=open("test.txt","r+",encoding="gbk")
如果打开的文件存在中文,那么选择错误的编码方式,不会在open()函数中报错,但是在对文件操作时有可能出现错误,如下所示:
之所以出现上述错误,就是由于指定的GBK编码不能对utf-8的部分编码进行解码导致的。
然而,由于gbk和utf-8在英文和数字上的支持,因此我们使用utf-8和gbk编码时打开不同的文件也会操作正常,如下所示:
三、文件操作与操作系统
实际上,尽管我们使用Python,可以很轻松的操作文件,但是其中有很多文件操作的细节,都是Python自动的帮助我们完成了,因为这涉及到很多文件系统、操作系统的知识。事实上,Python对文件的操作,在操作系统看来,是对文件系统的操作。Python对于文件的操作很大程度上要依靠操作系统来执行。
例如,我们在Python中,使用open()函数打开一个文件后,在操作系统上类似一个“占用”,直至我们使用close()函数解除对该文件的占用(或者采用其他方式解除)。在对文件的占用期间,其他程序不能对该文件进行删除。
此外,Python中文件句柄的概念,也是继承了操作系统的相关文件句柄操作。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200