文件操作
读文件
- 打开文件
open(path, flag[, encoding][, errors])
path:要打开文件的路径
flag:打开方式
r:以只读方式打开,文件描述符放在文件开头
rb:二进制只读方式打开 文件,文件描述符放在文件开头
r+:读写方式,文件描述符放在文件开头
w:写方式,若该文件存在,则覆盖原内容;若不存在,则创建新文件
wb:二进制值写入方式,若该文件存在,则覆盖原内容;若不存在,则创建新文件
w+:读写方式,若该文件存在,则覆盖原内容;若不存在,则创建新文件
a:追加,若该文件存在,文件描述符放在文件末尾。
a+
encoding:编码方式
errors:错误处理
-
读文件内容
f.read() #全部读取
f.readline() #按行读取
f.readlines() #
若传入参数,则读取从描述符开始num个字符。 -
关闭文件
f.close() -
指定文件描述符的位置
f.seek(num)
path = "C:\Users\Administrator\Desktop\pythontest\myfile1.txt"
#1
try :
f = open(path, "r")
str1 = f.read()
print(str1)
finally:
if f:
f.close()
#2 使用with打开文件读操作效果等效于#1方法,且用with不需写关闭文件语句
with open(path, "r") as f2:
print(f2.read(2)) #读取从文件描述符开始2个字符
写文件
- 打开文件
- 写操作:将信息写入缓冲区
- 刷新缓冲区
f.flush():把内部缓冲区的数据立刻写入文件。注意,不写这一句的话,信息只是写入缓冲区而没有写入文件。当然不写的话只能被动等待缓冲区自动刷新写入。自动刷新的几种方式:关闭文件,缓冲区满,手动刷新等。 - 关闭文件
path = "C:\Users\Administrator\Desktop\pythontest\myfile1.txt"
#1
f1 = open(path, "w")
f1.write("my name is Linda")
f1.flush()
f1.close()
#2 使用with打开文件写操作效果等效于#1方法,且用with不需写关闭文件语句
with open(path, "a") as f2: #追加
print(f2.write("my name is Linda"))
list-tuple-dict-set文件操作
前面都是对字符串操作,接下来对list,tuple,dict,set操作都需要import pickle。
import pickle #数据持久性模块
举例读写tuple文件:
import pickle
path = "C:\Users\Administrator\Desktop\pythontest\myfile2.txt"
mytuple = (1,2,3,4,5,"my name is Linda")
f = open(path, "wb")
pickle.dump(mytuple, f)
f.close()
#read
temptuple = ()
f1 = open(path, "rb")
temptuple = pickle.load(f1)
print(temptuple)
f1.close()
执行结果