Python3 文件操作

发布时间:2019-09-27 07:10:47编辑:auto阅读(1987)

    Python3 文件操作

    打开方式

    • 手动挡open+close
    • 自动挡with,自关闭

      常见操作

    • w, r, a, b
    • write
    • readline
    • readlines
    • seek
    • tell
    • read

      相关模块

    • fnmatch
    • glob
    • pickle
    • StringIO
    • shelve
    • ……

    手动档

    # 打开文件
    f = open('文件名', '文件打开方式')
    # f 是文件对象指针,用来进行读写操作
    # 关闭文件
    f.close()

    文件的三种操作模式:读r、写w、追加a

    示例代码:

    #!/usr/bin/python3
    import os
    # 切换到测试目录
    os.chdir(r'D:\python\test')
    f = open('ss.txt', 'w') # 用写的方式打开文件,不存在则创建
    f.write('hello python3!')
    f.close()

    自动档

    写模式下文件不存在可以自动创建,而读模式不能自动 创建
    示例代码:

    #!/usr/bin/python3
    with open('ss1.txt', 'w') as f:
        f.write('Hello Python3' * 8)
    
    with open('ss1.txt') as f:   # r模式是默认,可以不写
        data = f.read()           # 一次读出所有内容,作为一个字符串保存到变量
        print(data)
    
    with open('ss1.txt', 'a') as f:
        f.write('11111\n')
        f.write('1111111\n')
        f.write('111111111\n')
    
    with open('ss1.txt') as f:
        print(f.readline())
        print(f.readline())  # readline() 每次读取一行
    
    with open('ss1.txt') as f:
        print(f.readlines())        # readlines()读取所有行与read()类似,但readlines()带格式,可以按行输出
    

    tell() & seek()

    • tell() 告诉我们文件读到的位置
    • seek()会返回到某个位置
      示例代码:
    #!/usr/bin/python3
    
    f = open('ss1.txt')
    print(f.tell())      # 告诉我们读到的位置
    print(f.readline())
    print(f.tell())
    print(f.readline())
    f.seek(0)           # 返回到第几个位置
    print(f.tell())
    print(f.readline())
    f.seek(0)
    print(f.readline())
    f.close()

    StringIO

    虚拟文件、临时文件,不需要真保存到磁盘

    #!/usr/bin/python3
    
    import io
    output = io.StringIO()
    output.write('第一行代码\n')
    print('试一下print到文件:', file=output)
    
    # 取出内容
    contents = output.getvalue()
    print(contents)
    output.close()

    输出:
    第一行代码
    试一下print到文件:

    shelve

    用类似于字典的方式存储任意的python对象

    #!/usr/bin/python3
    import shelve
    with shelve.open('test.txt') as so:
            so['yhy'] = '这是我'
    
    with shelve.open('test.txt') as so:
        print(so['yhy'])
    

    输出:
    这是我

    pickle

    用二进制来读写文件
    相关方法:

    • dumps # 将数据通过特殊的形式转换为只有python语言认识的字符串,不写入文件
    • dump # 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
    • loads # 将pickle数据转换为python的数据结构
    • load # 从数据文件中读取数据,并转换为python的数据结构
      示例代码:
    #!/usr/bin/python3
    
    import pickle
    dicta = {'1':{'日期':'1.2','事项': 'wan','耗时':'3'}}
    with open('D:\python\memo.pkl', 'wb') as e:
                e.write(pickle.dumps(dicta))
    
    with open('D:\python\memo.pkl', 'rb') as f:
        stra = pickle.load(f)
    print(stra)

    输出:
    {'1': {'日期': '1.2', '事项': 'wan', '耗时': '3'}}

关键字

上一篇: python3 cookbook

下一篇: Python3 异步IO--asynci