Python学习 - 第8天(文件操作)
1、打开文件
open('路径','打开方式','指定编码方式')
路径:绝对路径,相对路径
打开方式:r w a r+ w+ a+ b
r+ 打开文件直接写和读完再写
编码方式:utf-8
# w: 没有此文件就会创建文件 f = open('log',mode = 'w',encoding = 'utf-8') f.write('小哥哥!小姐姐!') f.close() # w: 有此文件,先将源文件的内容全部清除,再写 f = open('log',mode = 'w',encoding = 'utf-8') f.write('一场游戏一场梦!') f.close()
# w+ 写读(先写,再读) f = open('log',mode = 'w+',encoding = 'utf-8') f.write('漂洋过海来看你!') f.seek(0) print(f.read()) f.close()
# wb 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) f = open('log',mode = 'wb') f.write('说散就散!'.encode('utf-8')) f.close()
# r 只读 f = open('log',mode = 'r',encoding = 'utf-8') content = f.read() print(content) f.close()
# r+ 读写,追加写 f = open('log',mode = 'r+',encoding = 'utf-8') content = f.read() print(content) f.write('我的一个道姑朋友!') f.close()
# rb 以bytes类型操作的读写,写读,写读模式 f = open('log',mode = 'rb') content = f.read() print(content) f.close() # b'\xe8\xaf\xb4\xe6\x95\xa3\xe5\xb0\xb1\xe6\x95\xa3!\xe6\x88\x91\xe7\x9a\x84\xe4\xb8\x80\xe4\xb8\xaa\xe9\x81\x93\xe5\xa7\x91\xe6\x9c\x8b\xe5\x8f\x8b\xef\xbc\x81'
# a 追加 f = open('log',mode = 'a',encoding = 'utf-8') f.write('追光者') f.close()
# a+ 追加再读,f.seek(0),指针指向起始 f = open('log',mode = 'a+',encoding = 'utf-8') f.write('岁月神偷') f.seek(0) print(f.read()) f.close()
# ab 以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 f = open('log',mode = 'ab') f.write('才华有限公司!'.encode('utf-8')) f.close()
2、操作文件
1)读
read 一次性读
readlines 一次性读
readline 一行一行的读
不知道在哪儿结束
视频、图片、rb、bytes,按照字节读
for循环 最好!!!
2)写
write
3)光标 — 文件指针
seek() 指定光标移动到某个位置
tell() 获取光标当前的位置
truncate() 截取文件
3、关闭文件
close()
with open() as f:
4、修改文件
with open('log',encoding = 'utf-8') as f,open('log.bak','w',encoding = 'utf-8') as f2: for line in f: if '陈粒' in line: line = line.replace('陈粒','双笙') f2.write(line) import os os.remove('log') os.rename('log.bak','log')