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+'。


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

  • 相关阅读:
    Linked List Cycle leetcode java (链表检测环)
    Remove Duplicates from Sorted List II leetcode java
    Remove Duplicates from Sorted List leetcode java
    Merge Two Sorted Lists leetcode java
    Swap Nodes in Pairs leetcode java
    Median of Two Sorted Array leetcode java
    阿里云最便宜的四种域名注册
    nohup和&后台运行,进程查看及终止
    ipv6转ipv4 NAT64与DNS64基本原理概述
    ros使用pppoe拨号获取ipv6,并且下发IPV6的dns到客户机win7
  • 原文地址:https://www.cnblogs.com/xiaoxi-3-/p/9181690.html
Copyright © 2011-2022 走看看