十一、文件IO操作
Python的内置库提供了对文件的IO操作。 可以对文件进行打开 、读写 、关闭 等操作。
1. 文件读取操作
你必须先用Python内置的open()
函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写 。
fileObject = open(file_name ,mode,encoding)
- filename:一个包含了你要访问的文件名称的字符串值,要求是全路径,如r"e:\xxx.txt"或者"e:\xxx.txt"
- mode:文件的访问模式,只读,写入,追加等
- encoding:读取数据的编码格式,只有文本文件时才能加该参数
mode是文件的读写方式:
- r: 只读模式,不能写入,默认的格式,必须是文件已经存在
- w: 只写模式,覆盖写入,如果文件不存在,创建文件并写入
- a: 追加写入,在原来文件内容的基础上,继续写入数据
- r+: 读写模式,需要文件已存在
- w+: 读写模式,文件可以不存在,它可以先创建、再读写
- b: 二进制读写,对非文本文件的读写
打开文件open:
f = open("测试.txt", "r", encoding="UTF-8")
print(type(f))
读取文件:
print("读取15个字节", f.read(15))
print("读取全部内容", f.read()) # 除掉前面读取的15个字节外的所有内容
读取文件全部行,返回列表 readlines():
f1 = open("测试.txt", "r", encoding="UTF-8")
lines = f1.readlines()
print(type(lines))
print(lines)
for line in lines:
print(line, end='')
逐行读取 readline():
f2 = open("测试.txt", "r", encoding="UTF-8")
print(f2.readline(), end='')
print(f2.readline(), end='')
print(f2.readline(), end='')
line = f2.readline()
while line:
print(line, end='')
line = f2.readline()
简化的for遍历: 打开文件后直接就可以遍历(文件对象)得到每一行的数据
f3 = open("测试.txt", "r", encoding="UTF-8")
for line in f3:
print(line, end='')
关闭文件对象 结束IO操作:
f.close()
f1.close()
f2.close()
f3.close()
前面读取文件方式,都是需要显示的调用close()方法,关闭文件对象。有时候写代码,忘记关闭,那就麻烦了。
所以python提供了一种自动关闭文件对象的操作方式:with open
with open("测试.txt", "r", encoding="UTF-8") as f:
for line in f:
print(line, end='')
执行完后,自动关闭文件对象。
2. 文件写入操作
w模式是写入,通过write方法写入内容。
准备文件: 创建一个测试1.txt
文件,写入内容“java流弊”
写入代码操作:
# 打开文件 模式w写入,文件不存在,则自动创建
f = open("测试1.txt", "w", encoding="UTF-8")
# write写入操作 内容写入到内存缓存区
f.write("python流弊")
# flush刷新,内容刷新到硬盘
f.flush()
# close关闭文件 close方法包含了flush功能,所以可以省略flush
f.close()
执行后: 原文件的内容被覆盖。
3. 文件追加操作
a模式,追加内容。写入依然是write方法。
# 打开文件 模式a追加,不存在,则自动创建
f = open("测试2.txt", "a", encoding="UTF-8")
# write写入操作 内容写入到内存缓存区
f.write("fdafa")
# flush刷新,内容刷新到硬盘
f.flush()
# close关闭文件 close方法包含了flush功能,所以可以省略flush
f.close()
执行后: 在原文件的内容后面加上了“fdafa”