文件操作

#写(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)

浙公网安备 33010602011771号