• 190328文件处理


    一、文件处理初识

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过文件句柄对文件进行操作
    3. 关闭文件
    • 文本示例
    汉皇重色思倾国,御宇多年求不得。
    杨家有女初长成,养在深闺人未识。
    天生丽质难自弃,一朝选在君王侧。
    回眸一笑百媚生,六宫粉黛无颜色。
    春寒赐浴华清池,温泉水滑洗凝脂。
    侍儿扶起娇无力,始是新承恩泽时。
    
    • 基本操作
    f = open("长恨歌", 'r', encoding="utf-8")  # open函数会使用当前系统的编码打开
    data = f.read()
    print(data)
    f.close()
    

    二、基本文件处理

    • 读模式:r
    f = open("长恨歌",'r', encoding="utf-8")  # open函数会使用当前系统的编码打开
    
    print(f.read())  #读取全部,按字符读
    print(f.readable())  #判断文件是否可读  True
    print(f.readline(), end='')  #读一行,end='' 换行符
    print(f.readline())  #杨家有女初长成,养在深闺人未识。
    print(f.readlines())  #将所有行读处理放到列表中
    
    f.close()
    
    • 写模式:w
    1. 只有字符串才能写到文件中
    f = open("dongfei_file", 'w', encoding="utf-8")
    
    f.write("汉皇重色思倾国,御宇多年求不得。
    ")
    f.write("杨家有女初长成,养在深闺人未识。
    ")
    print(f.writable())  #判断文件是否可写  True
    f.writelines(["天生丽质难自弃,一朝选在君王侧。
    ", "回眸一笑百媚生,六宫粉黛无颜色。
    "])  #将列表中的元素写到文件中
    
    f.close()
    
    • 追加模式:a
    f = open("dongfei_file", 'a', encoding="utf-8")
    
    f.write("春寒赐浴华清池,温泉水滑洗凝脂。")  #写到文件最后
    
    f.close()
    
    • 读写模式:r+

    • 写读模式:w+,x+,a+

    • 模拟修改文件,硬盘上的文件是无法修改的

    f = open("dongfei_file", 'r', encoding="utf-8")
    data = f.readlines()
    f.close()
    
    f2 = open("new_dongfei_file", 'w', encoding="utf-8")
    f2.writelines(data[0])  #文件的处理逻辑
    f2.close()
    
    • 自动关闭文件
    with open("a.txt", "r", encoding="utf-8") as src_f, 
            open("new_a.txt", "w", encoding="utf-8") as des_f:
        data = src_f.readline()
        des_f.write(data)
        print(data)
    
    • 二进制读:rb
    with open("a.txt", "rb") as f:
        data = f.read()
        print(data)
        print(data.decode())
    
    • 二进制写:wb
    with open("b.txt", "wb") as f:
        f.write(bytes("dongfei 你好
    ", encoding="utf-8"))
        f.write("dongfei2 你好".encode("utf-8"))
        f.write(b"dongfei3
    ")  #这样方法不能写中文
    
    • 二进制追加:ab

    • 文本模式:t

    • 二进制模式:b,二进制模式可以跨平台

    • 其他方法:

    f = open("c.txt", "w", encoding="utf-8")
    print(f.closed)  #判断文件是否是关闭的
    print(f.encoding)  #打印文件打开的编码
    f.flush()  #将内存中修改的数据保存至硬盘
    print(f.tell())  #光标当前所在位置
    f.seek(0)  #控制光标的移动,按字节移动
    f.truncate()  #截取
    
    • 光标操作
    #绝对位置seek
    with open("dongfei_file", "r", encoding="utf-8") as f:
        print(f.tell())  #0
        f.seek(10)
        print(f.tell())  #10
        f.seek(3)
        print(f.tell())  #3,默认从文件开头seek
    
    #相对位置seek
    with open("dongfei_file", "rb") as f:
        print(f.tell())  #0
        f.seek(10,1)
        print(f.tell())  #10
        f.seek(3,1)
        print(f.tell())  #13 ,以相对位置seek
    
    #倒叙位置seek
    with open("dongfei_file", "rb") as f:
        print(f.tell())  #0
        f.seek(-10,2)  #倒叙seek,-10是往回移动
        print(f.tell())
        f.seek(-3,2)
        print(f.tell())  #以相对位置seek
    
    • 读出文件的最后一行
    with open("dongfei_file", "rb") as f:
        for i in f:
            offs = -10
            while True:
                f.seek(offs,2)
                data = f.readlines()
                if len(data) > 1:
                    print("文件的最后一行:",data[-1].decode("utf-8"))
                    break
                offs *= 2
    
  • 相关阅读:
    python logging模块
    python re模块
    python xml模块
    python json,pickle,shelve模块
    python os,sys模块
    python 临时添加环境变量
    python random模块
    python time模块
    python 装饰器的简单使用
    python学习之路(二)
  • 原文地址:https://www.cnblogs.com/L-dongf/p/10623504.html
Copyright © 2020-2023  润新知