文件操作
- 文件路径
- 绝对路径 明确所有路径盘符
- 相对路径 相对当前运行程序路径
- 编码方式 utf-8gbk……
- 以什么编码储存文件就要以什么编码打开文件,否则报错
- 操作方式
- 'r' 只读
- 'rb' 二进制读取
- 'w' 只写--无文件自动创建,有文件则覆盖
-
'wb' 二进制写入
f = open('文件.txt', 'wb') content = f.write('这是写入的数据'.encode('utf-8')) f.close() #结果,在当前路径下生成二进制文件
-
- 'a' 追加
- 'ab' 以bytes类型追加
- 'r+' 读写-最常用的
- 先读后写,后方插入
- 先写后读,从头覆盖
- 'r+b' 二进制读写
- 'w+' 写读
- 覆盖源文件了
- 'r' 只读
功能详解
- f.read(n) 从光标处读取n个字符
- f.readable() 是否可读
- f.readline() 一行一行的读
- f.readlines() 把每一行的内容变成列表的一个元素
- f.seek(位置) 调节光标至字节位置后
- utf-8 中文3字节,英文一个字母一个字节
- f.tell() 返回光标所在位置
f.seek(f.tell()-n) 技巧方法 - f.truncate() 截取字符串,将当前光标后的所有内容删除
- for循环查看 文件的每一行输出
- with open('path', mode='r+', encoding=None) as f:
- 这种写法没有close()
- 可以同时打开多个
- 缩紧写
修改文件(补充)读取旧文件>>替换内容>>写进新文件>>删除旧文件>>重命名新文件与旧文件同名
with open('file1.txt', 'r', 'utf-8') as f1, open('file2.bak', 'w', 'utf-8') as f2:
for line in f1:
if '旧内容' in line:
line = line.repleace('旧内容', '新内容') #假设将旧文件内容替换
f2.write(line)
#引用.os模块完成文件删除和重命名
os.remove('file1.txt')
os.rename('file2.bak', 'file1,txt')
#完成文件的修改