Python 在读取和写入一个文件的时候,需要创建一个文件对象(file object),然后才能进行读取写入。
文件对象
为什么需要文件对象
之所以要创建文件对象才能读写,是因为 Python 创建了一个中间层,这样用户就不用考虑底层的 io,通过中间层就可以实现读写。
创建一个文件对象
使用open()
会返回一个文件对象,最长使用的方式是配合两个参数:open(filename,mode)
。
举个例子,假设有一个名为hello.txt
,对其创建一个文件对象f
:
f=open('hello.txt','r')
这里的'hello.txt'
就是文件名称,后面的'r'
表示在阅读模式下读取。
各字符含义如下:
字符 | 含义 |
---|---|
'r' | 在阅读模式下,打开文件进行读取(也是默认模式) |
'w' | 打开文件进行写入(如果文件已经存在,那么从开头删减) |
'a' | 打开文件进行写入,如果文件已经存在,那么将内容附加到文件末尾 |
'x' | 打开文件进行唯一的创建,如果文件已经存在,那么将会失败 |
'b' | 二进制模式 |
't' | 文本模式(默认) |
'+' | 打开文件进行更新(也就是同时开启读取和写入) |
默认模式是'r'
,其实等价于'rt'
。
也就是说默认的是文本模式,这点非常重要,因为读取的时候会在行尾添加\n
,如果是编写二进制文件,如果添加了\n
的后果可想而知。
而且读取和写入要创建两个文件对象。
open()
还有其他参数,具体请查看官方文档 https://docs.python.org/3.8/library/functions.html#open
关闭文件对象
在使用完文件对象之后,需要关闭来释放使用的资源。关闭文件使用f.close()
即可。
不过,需要注意使用with
的时候,如果不调用f.write()
或者调用f.close()
,那么即使程序成功退出,那么还是可能会导致f.write()
的参数(也就是要写出的内容)不能完整地写入硬盘。
读取和写入文件
在创建文件对象之后,便可以对文件进行读取和写入。这里先进行读取。
假设有一个名为“1.txt”的文件。先针对读取和写入创建两个文本对象,读取使用默认模式,写入使用a
模式。
>>> fr=open('1.txt','r')
>>> fw=open('1.txt','w')
然后写入“Hello World!”,可以看到返回了写入的长度,12 个字符。
>>> fw.write('Hello World!')
12
读取查看一下:
>>> fr.read()
'Hello World!'
希望可以帮到有需要的人哦~