文件操作
打开文件
计算机除了拥有计算的能力之外,一定要有数据的存储能力,而对于数据的存储一般就可以通过文件的形式来完成。在Python中直接提供有文件的I/O(Input/Output)处理函数操作,利用这些函数可以方便地实现读取和写入。
open()函数的功能是进行文件的打开,在进行文件打开的时候如果不设置任何的模式类型,则默认为r(只读模式)。
open(file, mode='r', buffering=-1, encoding=None,
errors=None, newline=None, closefd=True, opener=None)| 模式 | 描述 |
|---|---|
r | 使用只读模式打开文件,此为默认模式 |
w | 写模式,如果文件存在则覆盖,文件不存在则创建 |
x | 写模式,新建一个文件,如果该文件已存在则会报错 |
a | 内容追加模式 |
b | 二进制模式 |
t | 文本模式(默认) |
+ | 打开一个文件进行更新(可读可写) |
如果以只读的模式打开文件,并且文件路径不存在的话,就会出现FileNotFoundError错误信息。
文件操作
file = open(file="data.txt", mode="w")
print("File name: %s" % file.name)
print("Mode: %s" % file.mode)
print("Status: %s" % file.closed)
print("Closing...")
file.close()
print("Status: %s" % file.closed)运行结果
File name: data.txt
Mode: w
Status: False
Closing...
Status: True文件读写
当使用open()打开一个文件之后,接下来可以使用创建的文件对象进行读写操作。
使用读模式打开文件后,可以使用循环读取每一行的数据内容。Python在进行文件读取操作的时候也可以进一步简化操作。文件对象本身是可以迭代的,在迭代的时候是以换行符进行分割,每次迭代就读取到一行数据内容。
| 方法 | 描述 |
|---|---|
close() | 关闭文件资源 |
fileno() | 获取文件描述符 |
flush() | 强制刷新缓冲区 |
read(n=-1) | 数据读取,默认读取全部 |
readlines(hint=-1) | 读取所有数据行 |
readline(size=-1) | 读取一行数据 |
truncate(size=None) | 文件截取 |
writable() | 判断文件是否可以写入 |
write(s) | 文件写入 |
writelines(lines) | 写入一组数据 |
既然所有的文件对象最终都需要被开发者关闭,那么可以结合with语句实现自动的关闭处理。通过with实现所有资源对象的连接和释放是在Python中编写资源操作的重要技术手段,通过这样的操作可以极大地减少和优化代码结构。
读取文件
with open(file="data.txt", mode="r", encoding="utf-8") as file:
for line in file:
print(line, end='')data.txt
Alice 16
Bob 17
Terry 21运行结果
Alice 16
Bob 17
Terry 21写入文件
with open(file="data.txt", mode="w", encoding="utf-8") as file:
info = {"Alice": 16, "Bob": 17, "Terry": 21}
for name, age in info.items():
file.write("%s %d\n" % (name, age))运行结果:data.txt
Alice 16
Bob 17
Terry 21互动实验
一个文件、一个游标、五种打开模式
访问权限PRO
PRO EXCLUSIVE探索不止于此
尊享 Pro 权益解锁完整互动实验、进阶解析与精选参考答案。
知识测验
题目
data.txt已存在,哪个模式会在打开时清空旧内容?
知识测验
题目
执行完with open(...) as file代码块后,file.closed是什么值?
动手练习
读取、筛选并追加汇总
scores.txt包含下面三条记录。编写Python程序,逐行读取,把分数至少为18的记录写入selected.txt,覆盖旧输出;然后用追加模式重新打开,写入Selected: 2。使用UTF-8和with,不改变输入文件。
TEXT
Maya 19
Noah 16
Iris 22