• python中的IO模块


    1.简介

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

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

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

    2.读取文件

    文本信息如下:

    2.1读取文件的基本信息

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

    2.2一次性读取

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

    2.3多次读取

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

    2.4按行读取

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

    2.5file作为迭代器

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

    2.6按行读取并存为list

     1 # 只读方式打开文本文件
     2 f = open('./readout.txt', 'r')
     3 # 一次性读取所有行并且返回list
     4 fileList = f.readlines()
     5 # ['line one
    ', 'line two
    ', 'xe4xb8xadxe6x96x87xe6xb5x8bxe8xafx95']
     6 print 'List列表:
    ', fileList
     7 for line in fileList:
     8     # #去掉每行头尾空白
     9     print line.strip()
    10 f.close()

    2.7读取二进制文件

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

    3.写入文件

    3.1写入文件的基本信息

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

    3.2多种写入

     1 # 只写方式打开文件,写入文本
     2 f = open('./writein.txt', 'w')
     3 # 写入文本
     4 f.write('line one')
     5 f.close()
     6 
     7 # 只写方式打开文件,以序列方式写入
     8 f = open('./writein.txt', 'w')
     9 contentList = ['line one 
    ', 'line two 
    ', '中文测试 
    ']
    10 # 写入序列
    11 f.writelines(contentList)
    12 f.close()

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

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

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

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

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

  • 相关阅读:
    POJ2723 Get Luffy Out解题报告tarjan+2-SAT+二分
    poj2186Popular Cows+tarjan缩点+建图
    KMP模板
    洛谷P1939【模板】矩阵加速(数列)+矩阵快速幂
    矩阵快速幂模板
    codeforce#483div2D-XOR-pyramid+DP
    codeforce#483div2C-Finite or not?数论,GCD
    codeforce978C-Almost Arithmetic Progression+暴力,枚举前两个数字的情况
    codeforce440C-Maximum splitting-规律题
    LuoGu-P2863牛的舞会The Cow Prom[tarjan 缩点模板]
  • 原文地址:https://www.cnblogs.com/jfl-xx/p/7793962.html
Copyright © 2020-2023  润新知