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

txt文件

open和close函数

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

其中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

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

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,https://www.runoob.com/python/python-files-io.html
2,https://www.cnblogs.com/hackpig/p/8215786.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值