zoukankan      html  css  js  c++  java
  • Python-TXT文本操作

    一、列出IO操作的标识符及描述

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

    二、读TXT文件

    要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符。

    >>> f = open('/Users/wangjuan/test.txt', 'r')
    #文件打开成功,调用read()方法可以一次读取文件的全部内容
    >>> f.read()
    'Hello, it is a test case!'
    #调用close()方法关闭文件
    >>> f.close()
    

    文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。

    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

    try:
        f = open('/Users/wangjuan/test.txt', 'r')
        print(f.read())
    finally:
        if f:
            f.close()
    

    但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

    with open('/Users/wangjuan/test.txt', 'r') as f:
        print(f.read())
    

    readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。举例如下:

    file = '/Users/wangjuan/test.txt'
    f = open(file, 'r')
    # 按行读出文件内容
    sourceInLines = f.readlines()
    f.close()
    # 定义一个空列表,用来存储结果
    new = []
    for line in sourceInLines:
          temp1 = line.strip('
    ')  # 去掉每行最后的换行符'
    '
          temp2 = temp1.split(',')  # 以','为标志,将每行分割成列表
          new.append(temp2)  # 将上一步得到的列表添加到new中
    

    三、写TXT文件

    写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

    >>> f = open('/Users/wangjuan/test.txt', 'w')
    >>> f.write('Hello, world!')
    >>> f.close()
    

    可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

    import os
    
    def write_re(result,type):
        file = str(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "data/result.txt")))
    
        with open(file, type) as f:
            f.write(result)
    

    当然如果你想写入的内容继续叠加的话,可以使用标识符'a'或者' a+'或者'ab+'。


    以上,对你有帮助的话,点赞吧~

  • 相关阅读:
    二柱子四则运算程序
    测绘软件使用感受
    二分图的最大匹配、完美匹配和匈牙利算法(转载)
    serialVersionUID的用处(转载)
    RMQ(模板)
    codeforces 825E
    红黑树
    SQL 范式(转载)
    java 移位运算
    [Hnoi2010]Bounce 弹飞绵羊
  • 原文地址:https://www.cnblogs.com/xiaoxi-3-/p/9181690.html
Copyright © 2011-2022 走看看