文件处理
open()
f = open("文件路径","打开文件模式","指定的字符编码")
f:文件句柄
#del f
f.close() #回收操作系统的资源
文件上下文处理:
withopen ('文件路径','打开文件模式','指定的字符编码') as f:
文件打开模式:
r:只读:
1.只读,不写
2.文件不存在,就会取消
w: 只写:
1.只写,不读
2.如果文件不存在,会创建新文件
3.存在,清空再写
a:追加写:
1.只写,不读
2.不存在,创建新文件
3.存在,原据末尾添加新数据
文件处理模式:
t:文本模式
只能与r、w、a连用
默认情况下是rt模式
b:bytes模式
处理:二进制数据
只能与r,w,a连用
文件处理内置方法:
读: f.read() 读文件,一次性读出所有文件
f.readline() 一次读一行
f.readlines() 全部读入内存,以换行符分隔,存入列表
f.readable() 是否可读
写:
f.write() 写文件
f.writeable () 判断是否可写
f.writelines() for + f.write
文件模式的补充:
"r w a" 纯净模式
r+,w+,a+:可读可写
可以先读后写
但是不可以先写后读
文件内光标的移动:
f.read('字符位数')
提供了一种查看源码和文档的方式:
f.seek(3,0)_doc_
f.seek(offset,whence)
offset:相对偏移度(光标移动的位数)针对的是字节
whence:指定光标位置从何开始
0:从文件开头
1: 从当前位置 .decode()方法
2:从文件末尾
补充:
utf—8:
中文是三个bytes
英文是一个bytes
rt:
read里参数针对字符
其他都是针对字节
gbk:
全是二个bytes
不设置encoding,默认是gbk
与encode无关,encoding只是参数
例题:模拟日志功能
# 写入文件 import time res = time.strftime('%Y-%m-%d %H-%M-%S') with open(r'file/aa.txt', 'a', encoding='utf-8') as f: for i in range(100): f.write(f'{res}: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! ')
import time with open(r'file/aa.txt', 'r', encoding='utf-8') as f: f.seek(0, 2) while True: time.sleep(60) re = f.readline() if re: print(re, end='')
aa.txt文件
019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你! 2019-11-08 21-06-03: 阿姆斯特朗螺旋手里超喜欢超喜欢超喜欢你!
修改文件方式:
# 修改文件 # 第一种方式 # with open(r'file/a.txt', 'r', encoding='utf-8') as f: # data = f.readline() # print(data) # print(type(data)) # with open(r'file/a.txt', 'w', encoding='utf-8') as f: # res = data.replace('asd', '姚某人') # print(res) # f.write(res) # # 第二种方式 import os with open(r'file/a.txt', 'r', encoding='utf-8') as rf, open(r'file/a1.txt', 'w', encoding='utf-8') as wf: data = rf.read() re = data.replace('asd', '姚某人') sum1 = wf.write(re) print(sum1) # print(1) os.remove(r'file/a.txt') os.rename(r'file/a1.txt', r'file/a.txt') # print(1)
这里导入了一个os包,调用了remove()方法,调用了rename()
a.txt
你是谁啊asd你是谁啊
执行后:
a.txt
你是谁啊姚某人你是谁啊