文件操作概述
python中读写文件的操作:使用open()函数打开一个文件,获取到文件句柄,再通过文件句柄进行各种操作;根据打开方式的不同能够执行的操作也会有所差异
- r:read 只读模式
f = open("a.txt", mode='r', encoding='utf-8')
# 将文件内容直接全部读出来 缺点:内存容易炸
print(f.read())
# 一行一行读取
print(f.readline().strip()) # strip()去掉换行符\n
# for循环读取
for line in f:
print(line.strip())
# 前面一行数据单独读取,后面书使用for循环
firstLine = f.readline()
print(firstLine.strip())
for line in f:
print(line.strip())
- w:只写模式 重新创建文件
f = open("a.txt", mode='w', encoding='utf-8')
f.write("我的世界太过安静,静得可以听见自己心跳的声音;")
f.write("\n")
f.write("心房的血液慢慢流回心室,如此这般的轮回。")
- a:append 追加写模式;不会重新创建文件,如果文件不存在,则创建文件
f = open("a.txt", mode='a', encoding='utf-8')
f.write("\n走着走着, 就散了, 回忆都淡了;")
f.write("\n")
f.write("看着看着,就累了,星光也暗了;")
- b:bytes 二进制模式,一般处理非文本文件,不能指定encoding
- rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
- wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
f1 = open("picture/picture.jpg", mode="rb")
f2 = open("newPicture/picture.jpg", mode="wb")
for line in f1:
f2.write(line)
- +:打开一个文件进行更新(可读可写) ------- 不提倡
- 省略f.close()的写法
with open("a.txt", mode="r", encoding="utf-8") as f1:
pass # 语句执行完之后,会自动执行close()操作
文件修改操作
1.读取文件中的内容,将需要修改的内容进行修改
2.将修改后的内容写到一个新文件中
3.删除原来的文件(借助os模块),把新文件重命名为原来的文件名
import os
with open("a.txt", mode="r", encoding="utf-8") as f1, \
open("a_副本.txt", mode="w", encoding="utf-8") as f2:
for line in f1:
if "就" in line:
newLine = line.replace("就", "你好呀")
f2.write(newLine)
os.remove("a.txt")
os.rename("a_副本.txt", "a.txt")
读取规则的文件
文件格式如下:
f = open("a.txt", mode="r", encoding="utf-8")
# 将头目录处理成列表
head_list = f.readline().split()
lst = []
# 每读一行,分割成列表
for line in f:
line = line.strip()
data_list = line.split()
dic = {}
# 根据下表进行key:value匹配
for i in range(len(data_list)):
dic[head_list[i]] = data_list[i]
lst.append(dic)
f.close()