• python 常用文件读取和保存方式汇总


    txt文件

    open和close函数

    fileObject = open(file_name [, access_mode][, buffering])
    fileObject.close()
    
    • 1
    • 2

    其中access_mode决定了打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读r
    下表是对文件打开模式的一个很好的总结,留意一下rw的指针都在开始,a的指针在结尾。所以虽然w+虽然可以实现写入,但需将指针移到文件结尾才不会覆盖文件内容。
    在这里插入图片描述

    文件对象的方法

    • fileObject.read() ,全部读入
    • fileObject.readline(),逐行读取数据
    • fileObject.readlines(),全部读入且将文件内容按行以列表的形式存放
    • fileObjet.next(),逐行读取数据,和readline() 相似,唯一不同的是,readline() 读取到最后如果没有数据会返回空,而next() 没读取到数据则会报错
    • fileObject.writelines(),将列表进行多行写入

    读写示例理解rwa中的指针

    现在有一个test文件,其中只有一行内容为test
    在这里插入图片描述

    w

    with open('tmp/test.txt', 'w+') as f:  # +实现可读,不然下面的read会报错
        text1 = f.read()
        print('text1:', text1)  # text1为空,因为w打开时,对文件覆盖了
        f.write('add one more line')
        text2 = f.read()  # text2为空,因为w写完后,指针指向文件末尾
        print('text2:', text2)
        f.seek(0)  # 重新将指针指向文件开头
        text3 = f.read()
        print('text3:', text3)
    >>> 
    text1: 
    text2: 
    text3: add one more line
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    a

    with open('tmp/test.txt', 'a+') as f:  # +实现可读,不然下面的read会报错
        text1 = f.read()
        print('text1:', text1)   # text1为空,因为a打开时,指针指向文件末尾
        f.write('add one more line')
        text2 = f.read()   # text2为空,因为a追加后,指针指向新的文件末尾
        print('text2:', text2)
        f.seek(0)    # 重新将指针指向文件开头
        text3 = f.read()
        print('text3:', text3)  # text3发现f并不会自动添加换行符号
    >>> 
    text1: 
    text2: 
    text3: testadd one more line
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    r

    with open('tmp/test.txt', 'r+') as f:   # +实现可写,不然下面的write会报错
        text1 = f.read()
        print('text1:', text1)   # text1不为空,因为r+,指针指向文件开头
        f.write('add one more line')
        text2 = f.read()    # text2为空,因为+追加后,指针指向新的文件末尾
        print('text2:', text2)
        f.seek(0)    # 重新将指针指向文件开头
        text3 = f.read()
        print('text3:', text3)    # text3发现test被覆盖了,因为是从文件开头开始写入的
    >>> 
    text1: test
    text2: 
    text3: testadd one more line
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在使用过程中,一定要搞清楚指针当前所处的位置。

    参考:
    1,https://www.runoob.com/python/python-files-io.html
    2,https://www.cnblogs.com/hackpig/p/8215786.html

  • 相关阅读:
    阿里年薪百万程序员总结的Spring全家桶手册,见识了什么才是真的全家桶
    用go封装一下二级认证功能
    ElasticSearch从入门到精通:数据导入
    软件测试 - 基础篇
    字节跳动java面试题,附详细答案解析
    MHA高可用
    【数据结构】堆及堆排序的实现(C语言)
    【10.26】集美大学第九届程序设计竞赛(同步赛)
    C++求欧拉角(eigen库中暴露的一些问题)
    linux之权限
  • 原文地址:https://blog.csdn.net/weixin_39925939/article/details/122049205