python文件
文件
- 什么是文件?
文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 用户/应用程序:(f=open(),获取文件对象、文件句柄) 操作系统:文件 计算机硬件:硬盘
- 文件的作用?
用于应用程序操作硬盘进行数据的永久存储,或从硬盘中读取数据
应用程序操作文件的行为,都是文件在调用操作系统,操作系统将其转为具体的硬盘操作
- 使用文件
# 打开文件,
f = open(r'文件路径',mode="rt",encoding="utf-8") # r兼容平台路径的转义
# 文件读写
f.read()
# 关闭文件
f.close()
文件模式
文件内容模式
t
模式:文本模式,读写都是以字符串(unicode)为单位的,只能针对文本文件,必须指定字符编码encoding="utf-8"
b
模式:binary
模式# 1. 读写都是以bytes为单位 # 2. 可以针对所有文件类型 # 3. 一定不能指定字符编码 # 4. 如何是纯英文字符,可以使用b'111aasdf'得到bytes类型 # 5. "上".encode('utf-8') == bytes('上',encoding="utf-8") with open(r"xx.mp3",mode="rb") as f: ...
文件操作模式
r
模式:只读模式w
模式:只写模式,清空写a
模式:只写模式,追加写+
模式(了解):可读可写,不能单独使用,必须与r/w/a
配合使用x
模式(了解):只写模式,不存在则创建,存在时报错
文件操作方法
# 读操作
f.read() # 读取所有内容,执行完读操作光标移动到最后
f.read(1024) # 读取内容大小,
f.readline() #一次读一行,光标移动到下一行首位
f.readlines() # 读取每一行,返回一个列表移动到最后
# 写操作
f.writelines(list) # list列表写入文件
# flush
f.flush() # 刷新
# readable/wirtable/closed : 判断是否可以读、写、是否关闭
f.readable()
f.writable()
f.closed
f.name
f.encoding
文件的指针操作
指针的移动单位都是以bytes为单位的,只有一种情况特殊,t模式下的read(n),n代表的是字符个数
- 模式0:参照物是文件开头位置
- 模式1:参照物是指针当前位置
- 模式2:参照物是文件开头结尾
只有0模式可以在t下使用,1、2必须在b模式下用
f.seek(2,0)
f.seek(2,1)
f.seel(-2,2) # 倒序查找
f.tell() # 获取文件指针位置
文件修改
文件修改的本质是:修改的是内存,然后在硬盘中覆盖
# 方式1:文本编辑器采用就是这种方式-读到内存中然后修改,再将修改后的内容覆盖到源文件中
# 优缺点:占用内存,不占用硬盘
with open(r"aa.txt",mode="rb") as f:
res = f.read()
data = res.replace("aa","bb")
with open(r"aa.txt",mode="wb") as f:
f.write(data)
# 方法2:创建新文件,写入到新文件,删除源文件,更改新文件名称
# 优缺点:占用硬盘,不占内存
import os
with open(r"aa.txt",mode="rb") as f,\
open(r".aa.txt.wrap",mode="wb") as f1:
while 1:
info = f.read(1024)
if len(info) == 0:
break
else:
f1.write(info)
os.remove('aa.txt')
os.rename('.aa.txt.warp','aa.txt')