文件操作

 

   

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

  

  

 

posted @ 2018-09-12 20:45  冒蓝火的加特林哒哒哒  阅读(135)  评论(0编辑  收藏  举报