• 文件操作


       

    #写(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() # 空白: 空格, 	, 
    
    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)
    

      

      

  • 相关阅读:
    docker的核心概念、docker的安装与卸载
    centos 7 配置yum源
    杂记
    linux命令之rpm(软件的安装卸载)
    chrony服务及cobbler+pxe实现自动化装机
    sshd登录控制脚及本sudo权限设置
    selinux控制脚本、AWK应用、监控访问脚本实例
    排除GC引起的CPU飙高
    POI报表导入导出
    逆向学习之环境准备
  • 原文地址:https://www.cnblogs.com/PythonMrChu/p/9637241.html
Copyright © 2020-2023  润新知