python内置了读写文件相关的函数,用法和C语言兼容,在磁盘中读写文件的 操作是系统提供的。python读写文件的的操作
是请求系统打开一个文件,然后 再通过操作系统提供的接口在文件中读取或写入数据。
1、读取文件
读取文件过程:
1、打开文件
2、读取文件内容
3、关闭文件
1、打开文件
2、读取文件
2.1、read([n]) :读取n个字符,以r的形式打开的文件,字母、数字、汉字各为一个字符,如省略n,默认读取所有的字符
2.2、readline([n]) : 若省略n,读取整行,包括\n,若未省略n,则读取n个字符
2.3、readlines([n]) :读取所有的行,返回一个列表,将每行的内容作为列表的一个元素。
如果传入n,实际输出的字符可能会比n大,因为readlines以行未单位输出,读取数字时,会读取一整行
举个例子,每行有10个字符,输入n大于0小于10,则会输出第一行,n大于10小于20,则会输出前两行
,以此类推
3、关闭文件
close()
注:1、当文件使用结束后必须将文件关闭,因为文件在打开的状态下会占据系统资源,系统在同一时间打开的文件个数有限
2、已经关闭的文件并不能在进行操作
4、完整的读取文件操作
f1 = open(file="file.txt",mode="r",encoding="utf-8",errors="ignore")
print(f1.read())
f1.close()
2、写入文件
写入文件过程:
1、打开文件
2、读取文件内容
3、关闭文件
1、打开文件
打开文件的方式与读取文件时打开文件的方式类似,将mode改为写入文件所需要的指令
2、写入文件
write(str) 将str写入文件
3、关闭文件
close()
4、完整的写入文件操作
f1 = open(file="a.txt",mode="a",encoding="utf-8",errors="ignore")
f1.write("Hello World!!!!!!!")
f1.close()
3、使用with函数对文件进行操作
1、读取文件
with函数会自动调用close(),不用自己手动关闭文件
as 是将open返回的数据赋值给变量f1
with open(file="file.txt",mode="r",encoding="utf-8",errors="ignore") as f1:
print(f1.read())
2、写入文件
with open(file="qq.txt",mode="a",encoding="utf-8",errors="ignore") as f2:
f2.write("xxxxxxxxxx")
4、二进制文件
# 写入文件 wb 将写入的字符串进行编码encode()
with open(file="天气.txt",mode="wb") as f1:
# 编码
str1 = "北京有沙尘暴"
f1.write(str1.encode("utf-8"))
# 读取文件 rb
with open(file="天气.txt",mode="rb") as f2:
data = f2.read()
print(type(data)) # bytes 字节类型
# 解码
print(data.decode("utf-8"))
上面的代码以二进制写入文件,可使用utf-8(或其他格式)格式进行编码写入
下面的代码以二进制形式读取文件,可使用utf-8(或其他对应格式)进行解码读取
5、存储数据
当我们要存入列表、元组等数据时,上面的写入方法并不能满足我们的要求,这时我们需导入pickle模块实现对数据的存储
pickle支持存储list、dict、str等类型的数据
pickle:实现了数据的序列化与反序列化操作 数据的序列化操作可以实现数据的存储 数据的反序列化操作可以实现数据的读取
1、将信息写入文件
语法格式:pickle.dump(obj,file)
obj:写入的数据
file:写入的文件
2、读取文件
语法格式:pickle.load(file) file为读取的文件
3、使用pickle的完整操作
import pickle # 导入pickle模块
# 存入数据
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 即将存入的数据
f1 = open(file="file.data",mode="wb") # 打开文件
pickle.dump(list1, f1)
f1.close() # 关闭文件
# 读取数据
f2 = open("file.data","rb") # 打开文件
tmp = pickle.load(f2) # 读取文件中的数据
print(tmp)
f2.close() # 关闭文件
建议:当存储的数据不想通过文件双击直接打开,可以将后缀名设置为系统不能直接打开的格式,如:.data , .abc