1. 文件的读取
程序能够读取文件,便相当于程序有了自己的眼睛。用Python读取文件的第一步操作,是需要用其内置的open()函数打开目标文件。open()函数的常见形式如图1所示:
图1 open()函数参数示意图
1.1 文件的读取
1.1.1 read方法——返回全部文件内容的字符串
# read方法 读取全部文件
f = open("./data.txt", "r", encoding="utf-8") # 相对路径
content = f.read()
print(content)
f.close() # 读取完关闭文件,释放资源
1.1.2 readline方法————返回一行文件内容的字符串
readline方法,每次运行只会读取一行的内容,下次调用就读下一行,它会根据换行符来判断什么时候算本行结尾,而且换行符也会被当成读到的内容的一部分。一般会用While循环语句,判断只要返回的不是空字符串就继续读下一行,否则就退出循环
# readline方法,逐行读取
f = open("./data.txt", "r", encoding="utf-8")
line = f.readline() # 读取第一行
while line != "": # 判断当前行是否为空
print(line) # 不为空则打印当前行
line=f.readline() # 读取下一行
1.1.3 readlines方法——返回全部文件内容组成的列表
readlines会读取全部文件内容,并返回由每行组成的字符串列表,所以它一般回合for循环结合使用,先调用readlines()把所有行读出来,然后一行一行循环列表里的所有内容,
# readline方法,逐行读取
f = open("./data.txt", "r", encoding="utf-8")
line = f.readline() # 读取第一行
while line != "": # 判断当前行是否为空
print(line) # 不为空则打印当前行
line=f.readline() # 读取下一行
1.2 文件的关闭
1.2.1 close()方法
读取完文件后,就要及时关闭文件。文件对象有一个叫close()的方法,调用后该文件对象就会释放系统资源。
f = open("./data.txt")
print(f.read())
f.close()
1.2.2 with关键词
但有些时候我们很容易忘记调用Close,另外一种方法是用with关键词。with后面跟上open()函数的调用,然后as,后面跟上文件对象的命名。执行完毕后,文件就会被自动关闭。
with open("./data.txt", "r", encoding="utf-8") in f:
print(f.read())
2. 文件的写入
2.1 "w"写入模式
写文件与读文件有很多相似之处,都需要打开文件,并在操作完成后关闭文件。所以还是可以用熟悉的with open as,此时需要将读取模式"r"改为写入模式"w"。
with open("./poem.txt", "w", encoding="utf-8") as f:
f.write("我欲乘风归去,\n又恐琼楼玉宇,\n高处不胜寒。") # \n为换行符
# 运行结果
我欲乘风归去,
又恐琼楼玉宇,
高处不胜寒。
注意:"w"模式下,若原本没有poem.txt的存储路径,系统会帮你创建,但如果存在该文件并且有内容,系统会自动清除原本的所有内容。因此需要谨慎使用。
2.2 "a"附加模式
如果你不想删除原有内容,又想增加新内容,这时候需要使用附加模式"a"。
with open("./poem.txt", "w", encoding="utf-8") as f:
f.write("我欲乘风归去,\n又恐琼楼玉宇,\n高处不胜寒。")
with open("./poem.txt", "a", encoding="utf-8") as f:
f.write("\n起舞弄清影,\n何似在人间")
# 运行结果
我欲乘风归去,
又恐琼楼玉宇,
高处不胜寒。
起舞弄清影,
何似在人间
2.3 "r+"附加模式
还有个需要注意的点,无论是"w"还是"a"模式,都无法直接去读文件里原本的内容,此时,选用"r+"模式,就可以同时支持读写文件了。
with open("./poem.txt", "w", encoding="utf-8") as f:
print(f.read())
f.write("hello")