一、打开关闭文件
1、打开文件
函数open用于打开文件,文件名是必不可少的参数,并返回一个文件对象。
file object = open(file_name, access_mode, buffering])
file_name: 文件名(或路径),强制参数,其他参数是可选的。
access_mode: 打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering: 表示是否需要缓冲,为可选参数,默认值为-1,表示使用系统默认的缓冲区大小。(0代表不缓冲,>=1的值表示缓冲一行或指定缓冲区大小)。
不同模式打开文件的完全列表:
模式 | 描述 |
---|---|
t | 文本模式 (默认,与其他模式结合使用) |
x | 独占写入模式 |
b | 二进制模式(与其他模式结合使用) |
+ | 读写模式(与其他模式结合使用) |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:
属性 | 描述 |
---|---|
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
2、关闭文件
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
语法:
fileObject.close()
# 打开一个文件 f = open("test.txt", "w") print("文件名: ", f.name) # 关闭打开的文件 f.close()
二、读文件
1、read()方法
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
fileObject.read([size])
如果没有传入size,它会一次性读取文件的全部内容,保险起见,可以反复调用read(size)
方法,每次最多读取size个字节的内容。
while True: char = f.read(4) print(char) if not char: break
2、按行读取
readline()方法每次读取一行(从当前位置到下一个换行符的文本)。
readlines()方法一次读取所有内容并按行返回list。
如果文件很小,read()
一次性读取最方便;如果不能确定文件大小,反复调用read(size)
比较保险;如果是配置文件,调用readlines()
最方便:
for line in f.readlines(): print(line.strip()) # 把末尾的' '删掉
3、文件迭代器
文件实际上是可迭代的,这意味着可在for循环中直接迭代行。
# 打开一个文件 f = open("test.txt") for line in f: print(line) # 关闭打开的文件 f.close()
三、写文件
1、write()方法
可以直接调用f.write(string)方法写入文件内容。
2、多行写入
方法writelines与readlines相反:接受一个字符串列表(实际上,可以是任何序列或可迭代对象),并将这些字符串都写入到文件中。
四、使用上下文管理器
Python提供了 with 语句来管理资源关闭。比如可以把打开的文件放在 with 语句中,这样 with 语句就会帮我们自动关闭文件。
with open('somefile.txt') as somefile: do_something(somefile)
with语句让你能够打开文件并将其赋给一个变量(这里是somefile)。在语句体中,你可以读写文件。到达该语句末尾时,将自动关闭文件,即使出现异常亦如此。
with语句实际上是一个非常通用的结构,允许你使用上下文管理器。
关于上下文管理器,可以参考下面这边文章,感觉写的简洁又清晰:
https://www.cnblogs.com/wongbingming/p/10519553.html