文章目录
读文件
过程:
1、打开文件
2、读文件内容
3、关闭文件
打开文件
格式:
open(path,flag[, encoding][,errors]
path:要打开文件的路径
flag:打开方式
r 以只读的方式打开文件,文件的描述符放在文件的开头
rb 以二进制格式打开一个文件作用于读,文件的描述符放在文件的开头
r+ 打开一个文件用于读写,文件的描述符放在文件的开头
w 打开一个文件只用于写入,如果该文件存在,会覆盖;如果不存在,则创建新文件。
wb 打开一个文件只用于写入二进制,如果该文件存在,会覆盖;如果不存在,则创建新文件。
w+ 打开一个文件只用于读写,如果该文件存在,会覆盖;如果不存在,则创建新文件。
a 打开一个文件用于追加,如果该文件存在,文件描述符将会放在文件末尾
a+ 打开一个文件用于追加
encoding:编码方式
errors:错误处理
# ignore忽略错误
path = r"F:\pythonproject\027- 文件处理\file1.txt"
f = open(path, "r", encoding="utf-8", errors="ignore")
读取内容
1、read()读取文件的全部内容
str1 = f.read()
print(str1)
2、读取指定字符数
str2 = f.read(10)
print("*" + str2 + "*")
str3 = f.read(3)
print("*" + str3 + "*")
3、读取整行,包括“\n”字符
str4 = f.readline()
print(str4)
str5 = f.readline()
print(str5)
4、读取指定字符数
str6 = f.readline(10)
print(str6)
5、读取所有行并返回列表
list7 = f.readlines()
print(list7)
6、若给定的数字大于0,返回实际size字节的行数
list8 = f.readlines(22)
print(list8)
7、修改描述符的位置
f.seek(10)
str9 = f.read()
print(str9)
关闭文件
f.close()
一个完整的过程
try:
f1 = open(path, "r", encoding="utf-8")
print(f1.read())
finally:
if f1:
f1.close()
#
with open(path, "r", encoding="utf-8") as f2:
print(f2.read())
写文件
打开文件
import time
path = r"F:\pythonproject\027- 文件处理\file3.txt"
f = open(path, "w", encoding="utf-8")
写文件
1、将信息写入缓冲区
f.write("fanfan is a good man!")
2、flush()刷新缓冲区
直接把内部缓冲区的内容写入文件 ,而不是被动的等待自动刷新缓冲区写入
while 1:
f.write("sunck is a good man\n")
f.flush()
time.sleep(0.1)
f.close()
或者
with open(path, "a") as f2:
f2.write("sunck is")
编码与解码
path = r"F:\pythonproject\027- 文件处理\file5.txt"
编码
with open(path, "wb") as f1:
str = "fanfan is a good man凯!"
f1.write(str.encode("utf-8"))
解码
with open(path, "rb") as f2:
data = f2.read()
print(data)
print(type(data))
newdata = data.decode("utf-8")
print(newdata)
print(type(newdata))
list-tuple-set-dict的文件操作
import pickle #数据持久性模块
myList = (1, 2, 3, 4, 5, "fanfan is a good man")
path = r"F:\pythonproject\027- 文件处理\file6.txt"
f = open(path, "wb")
pickle.dump(myList, f)
f.close()
#读取
f1 = open(path, "rb")
tempList = pickle.load(f1)
print(tempList)
f1.close()