zoukankan      html  css  js  c++  java
  • python day 09 文件操作

    一 初识文件操作

    使⽤用python来读写⽂文件是非常简单的操作. 我们使⽤用open()函数来打开⼀一个⽂文件, 获取到⽂文
    件句句柄. 然后通过⽂文件句句柄就可以进⾏行行各种各样的操作了了. 根据打开⽅方式的不同能够执⾏行行的操
    作也会有相应的差异.
    打开⽂文件的⽅方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤用的是r(只读)模式

     二 

    读 1. " r "  

    f=open("e:/课堂练习.txt",mode="r",encoding="GBK")
    for line in f:
    print(line)

    f.close() #关闭
    
    
    
     f是一个可迭代对象
    f = open("d:/周润发大战奥特曼.txt", mode="r", encoding="utf-8") # 默认跟着操作系统走的  GBK
    # for line in f:  # 内部其实调用的是readline()
    #     print(line)
    # f.close() # 关闭

    写  2." w " 

    f = open("d:/sylar.txt", mode="w", encoding="utf-8")
    f.write("周笔畅
    ") # 第一次写的时候. 先清空. 再写入. 继续写不会清空了
    f.write("胡辣汤")
    f.write("实付款
    ")
    
    f.flush()  # 必须加
    f.close()  #最后这个

    追加  a

    f = open("d:/sylar.txt", mode="a", encoding="utf-8")
    f.write("娃哈哈") # 追加写
    f.write("爽歪歪")
    f.flush()
    f.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+ x写读

    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)

    三  光标 

     使用tell()可以知道光标在哪里
    # seek()可以移动光标
    # 读写的时候. 单位 字符
    # 光标: 单位是字节
    # 光标移动到末尾: seek(0,2)
      seek(偏移量, 位置)
    # 位置: 0开头, 1当前位置, 2末尾
    # 移动到末尾: seek(0, 2)

    2.截断

    f = open("我的天呐", mode="r+", encoding="utf-8")
    f.seek(9)
    f.truncate(12) # 如果没有参数. 按照光标来截断. 如果有参数. 截断到参数位置
    f.flush()
    f.close()

    3.修改文件

    mport os # 引入os模块
    
    with open("alex", mode="r", encoding="utf-8") as f1, 
         open("alex_副本", 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")

    4.日志处理

    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)
  • 相关阅读:
    MIPS——分支语句
    MIPS简单入门
    迷宫问题——最短路
    用dfs遍历联通块(优化)
    用protractor測试canvas绘制(二)
    android 用java代码设置布局、视图View的宽度/高度或自适应
    HBase编程实例
    Top10Servlet
    Delete Node in a Linked List
    atitit.html5动画特效----打水漂 ducks_and_drakes
  • 原文地址:https://www.cnblogs.com/systemsystem/p/9638121.html
Copyright © 2011-2022 走看看