• python教程:IO模块使用教程


    1.简介

    读写文件是常见的IO操作,python内置了读写文本的函数。

    读写文件的模式描述如下:

    模式 描述
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    2.读取文件

    文本信息如下:
    在这里插入图片描述

    1读取文件的基本信息

    # 只读方式打开文本文件
    f = open('./readout.txt', 'r')
    # 读取文件信息
    print ("文件名: ", f.name)
    print ("是否已关闭 : ", f.closed)
    print ("访问模式 : ", f.mode)
    print ("末尾是否强制加空格 : ", f.softspace)
    # 关闭文件
    f.close()
    

    在这里插入图片描述

    2一次性读取

     # 只读方式打开文本文件
     f = open('./readout.txt', 'r')
     # 一次性读取全部内容,不安全
     print ('一次性全部读取:\n', f.read())
     f.close()
    

    在这里插入图片描述

    3多次读取

    # 只读方式打开文本文件
    f = open('./readout.txt', 'r')
    # 文件长度
    # print '文件长度:', len(f.read())
    # 从文件的开头读取13个字节,超过文本长度则读取全部
    print ('第一次读取:\n', f.read(13))
    # 继续读取4个字节
    print ('第二次读取:\n', f.read(4))
    f.close()
    

    在这里插入图片描述

    4按行读取

    # 只读方式打开文本文件
    f = open('./readout.txt', 'r')
    # 分行读取
    print ('读取第一行:\n', f.readline().strip())
    print ('读取第二行的4个字节:\n', f.readline(4))
    f.close()
    

    在这里插入图片描述

    5file作为迭代器

    # 只读方式打开文本文件
    f = open('./readout.txt', 'r')
    for index in range(3):
        # file自身作为迭代器
        line = f.next()
        print (line.strip())
    

    在这里插入图片描述

    6按行读取并存为list

    # 只读方式打开文本文件
    f = open('./readout.txt', 'r')
    # 一次性读取所有行并且返回list
    fileList = f.readlines()
    # ['line one\n', 'line two\n', '\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95']
    print ('List列表:\n', fileList)
    for line in fileList:
        # #去掉每行头尾空白
        print (line.strip())
    f.close()
    

    在这里插入图片描述

    7读取二进制文件

     # 打开二进制文件,例如图片、视频
     f = open('./readpicture.jpg', 'rb')
     print (f.read())
     f.close()
    

    在这里插入图片描述

    3.写入文件

    1写入文件的基本信息

    # 只写方式打开文件,写入文本
    f = open('./writein.txt', 'w')
    # 读取文件信息
    print "文件名: ", f.name
    print "是否已关闭 : ", f.closed
    print "访问模式 : ", f.mode
    print "末尾是否强制加空格 : ", f.softspace
    # 关闭文件
    f.close()
    

    2多种写入

    '''
    学习中遇到问题没人解答?小编创建了一个Python学习交流群:857662006
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    # 只写方式打开文件,写入文本
    f = open('./writein.txt', 'w')
    # 写入文本
    f.write('line one')
    f.close()
    
    # 只写方式打开文件,以序列方式写入
    f = open('./writein.txt', 'w')
    contentList = ['line one \n', 'line two \n', '中文测试 \n']
    # 写入序列
    f.writelines(contentList)
    f.close()
    

    4.其他函数 file.tell() 、file.seek(offset,[],whence)

    # 以读写方式打开文件,以序列方式写入
    f = open('./writein.txt', 'w+')
    contentList = ['line one \n', 'line two \n', '中文测试 \n']
    # 写入序列
    f.writelines(contentList)
    # 指针位置:file.tell()
    print '写入后指针所在位置:', f.tell()
    # 指针偏移:file.seek(offset[, whence])
    # 前者为偏移量,后者为指针位置(默认0表示初始位置,1表示当前位置,2表示末尾位置)
    f.seek(0)
    print '偏移后指针所在位置:', f.tell()
    print '数据:\n', f.read()
    f.close()
    

    在这里插入图片描述

    5.使用with语句配合IO操作

     with open('/path/to/file', 'r') as f:
           print f.read()
    

    注:该种方式可以自动调用close()方法,避免出错!!!

  • 相关阅读:
    android 生命周期图
    c++中 箭头> 双冒号:: 点号.操作符区别
    Blocks 笔记
    使用AVAudioRecorder 录音
    音频输入大小变化图
    【Linux】本机与服务器文件互传、Linux服务器文件上传下载
    【Oracle】Oracle解锁、Oracle锁表处理
    使用three.js创建3D机房模型分享一
    WPF下递归生成树形数据绑定到TreeView上
    (转载)C++抽象工厂模式(大话设计模式)
  • 原文地址:https://www.cnblogs.com/djdjdj123/p/16019520.html
Copyright © 2020-2023  润新知