文件操作
#写(w)
f=open('path',mode='w',encoding='utf-8') f.write('你好呀!') f.flush() f.close()
#读(r)
f = open("d:/小护士模特少妇女网红.txt", mode="r", encoding="UTF-8") # content = f.read() # 读取内容, 读取3个字符 line1 = f.readline().strip() # 空白: 空格, \t, \n line2 = f.readline().strip() print(line1) print(line2) content = f.read() # 一次全都读取出来. 缺点: 1. 读取大的文件的时候. 内存容易溢出 2. 操作比较麻烦 content = f.readlines() # 也是全都加载进来了. print(content) # f是一个可迭代对象 f = open("d:/周润发大战奥特曼.txt", mode="r", encoding="utf-8") # 默认跟着操作系统走的 GBK for line in f: # 内部其实调用的是readline() print(line) f.close() # 关闭
#追加(a)
f = open("d:/sylar.txt", mode="a", encoding="utf-8") f.write("娃哈哈") # 追加写 f.write("爽歪歪") f.flush() f.close()
#文件拷贝(rb)
f1 = open("d:/桌面背景.jpg", mode="rb") f2 = open("E:/自拍.jpg", mode="wb") for line in f1: f2.write(line) f1.close() f2.flush() f2.close()
#读写模式(r+)
f = open("菜单", mode="r+", encoding="utf-8") # r+最常见 s = f.read(1) # 读取一个字符 print(s) f.write("胡辣汤") # r+模式. 如果你执行读了操作. 那么写操作的时候. 都是写在文件的末尾. 和光标没有关系 # f.write("ab") # 在文件开头写入. 写入的是字节,把原来的内容盖上 # for line in f: # print(line) # f.write("蛋炒饭") # 正确用法: 先读后写 f.close()
#写读模式(w+)
f = open("菜单", mode="w+", encoding="utf-8") # 很少用. f.write("疙瘩汤") f.seek(0) # 移动到开头 content = f.read() print("读取的内容是", content) f.flush() f.close()
#追加读模式(a+)
f = open("菜单", mode="a+", encoding="utf-8") f.write("韭菜鸡蛋饺子") f.seek(0) content = f.read() print(content)
#truncate
f = open("我的天呐", mode="r+", encoding="utf-8")#截取必须在r+模式下进行 f.seek(9) f.truncate(12) # 如果没有参数. 按照光标来阶段. 如果有参数. 截断到参数位置 f.flush() f.close()
#修改文件
import os # 引入os模块 with open("alex.txt", mode="r", encoding="utf-8") as f1, \ open("alex_副本.txt", mode="w", encoding="utf-8") as f2: for line in f1: new_line = line.replace("good", "sb") f2.write(new_line) os.remove("alex") os.rename("alex_副本", "alex")
#日志处理
时间|名字|action
2018-09-11 00:00:01|刘|吃鸡
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:01|刘|吃鸡
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
2018-09-11 00:00:02|王|打电话
处理成这样:
reult=[{时间:2018-09-11,名字:王,action:打电话},
{时间:2018-09-11,名字:刘,action:打电话},
{时间:2018-09-11,名字:王,action:打电话}]
result = [] with open("2018-09-12.log", mode="r", encoding="utf-8") as f: hang = f.readline() title = hang.split("|") for line in f: line = line.strip() # 去掉空白, 2018-09-11 00:00:01|刘|吃鸡 lst = line.split("|") dic = {title[0]: lst[0], title[1]: lst[1], title[2]: lst[2]} result.append(dic) print(result)