文件操作
1、文件路径:绝对路径和相对路径
'd:\study\user\day8\qwe' # 绝对路径 'qwe' # 相对路径
2、编码方式:以什么编码方式存储就因该用什么编码方式读取,不然会乱码
3、操作方式:只读,只写,读写,写读,追加······
文件的打开与关闭
open('d:\study\user\day8\qwe', mode='r', encoding='utf-8') # 绝对路径的打开文件 open('qwe', mode='r', encoding='utf-8') # 相对路径的打开文件
f.close() # 文件的关闭
在打开文件后应该注意及时关闭,释放内存空间,但为了避免忘记,可以使用with打开文件
with open('qwe', mode='r', encoding='utf-8') as f: pass
文件的读
f = open('qwe', mode='r', encoding='utf-8') s = f.read() print(s) f.close()
以bytes类型读取
with open('qwe', mode='rb') as f: print(f.read())
文件的写
with open('qwe', mode='w', encoding='utf-8') as f: f.write('看窗外的风景')
以bytes类型读取
with open('qwe', mode='wb') as f: f.write('看窗外的风景'.encode('utf-8'))
文件的追加
with open('qwe', mode='a', encoding='utf-8') as f: f.write(',窗外的风景在看你')
以bytes类型追加
with open('qwe', mode='ab') as f: f.write(',窗外的风景在看你'.encode('utf-8'))
文件的读写
with open('qwe', mode='r+', encoding='utf-8') as f: f.read() f.write(',孤独围绕着你')
以bytes类型读写
with open('qwe', mode='r+b') as f: f.read() f.write(',孤独围绕着你'.encode('utf-8'))
文件的写读
with open('www', mode='w+', encoding='utf-8') as f1: f1.write('aaaaaaaa') f1.seek(0) print(f1.read())
以bytes类型写读省略
文件的追加读或写
with open('www', mode='a+', encoding='utf-8') as f1: f1.write('bbb') f1.seek(0) print(f1.read())
功能详解
f.readline() 读取文件的一行,写一遍读一行
f.readlines() 按行读取文件,读取所有行,将每行的字符串当成一个元素写入一个列表
f.seek() 定位光标的位置,光标按字节定位,不是字符
f.tell() 告诉你光标现在的位置
f.truncate() 截取
with open('www', mode='w+', encoding='utf-8') as f1: f1.write('sdfasfasdfa') f1.truncate(5) f1.seek(0) print(f1.read())
f.readable() 判断是否可读
f.writeable() 判断是否可写
文件的修改
方法一:将文件全部读取到内存,在内存中是可以修改的,修改完后再覆盖到硬盘(文件内容不太多时使用)
import os with open('www.txt', mode='r+', encoding='utf-8') as f1,\ open('sss.txt.swap', mode='w+', encoding='utf-8') as f2: date = f1.read() date = date.replace('SB', 'haha') f2.write(date) os.remove('www.txt') os.rename('sss.txt.swap', 'www.txt')
方法二:将文件一行一行的读入内存,修改完毕就写入新文件,最后用新文件覆盖新文件
import os with open('www.txt', mode='r+', encoding='utf-8') as f1,\ open('sss.txt.swap', mode='w+', encoding='utf-8') as f2: for line in f1: line = line.replace('ss', 'haha') f2.write(line) os.remove('www.txt') os.rename('sss.txt.swap', 'www.txt')