关于文件操作的几种常用方式,总结如下,包括csv的一点用法和理解(后续总结)

一、文件操作的常用方式

1、文字说明

‘r’:只读,文件必须已存在,不存在则报错,

‘r+’:可读可写,该文件必须已存在,清空源文件内容并写入新的内容,

‘rb’:表示以二进制方式读取文件,该文件必须已存在,

‘w’:只写,打开即默认创建一个新文件,如果文件已存在,则覆盖写,即清空文件内原始数据,从新写入新数据,

‘w+’:只读,打开创建一个新文件,如果文件已经存在,则覆盖写,

‘wb’:表示以二进制方式打开,只能写文件,如果文件不存在,则创建该文件;如果文件已存在,则覆盖写,

‘a’:追加写。若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写且在最后面,不能读,

‘a+’:追加读写,打开文件方式与写入方式和‘a’一样,但是可以读。需要注意的是你若刚用‘a+’打开一个文件,一般不能直接读取,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。(可使用seek()方法解决,详细见下文Model8示例)

总结:总共就三大类‘r’(read)、‘w’(write)、‘a’(append),其余的均是一些组合,且‘r’类的必须文件存在才可使用;‘w’类可以有文件,也可以没有,没有时会自动创建;‘a’类在文件没有时也可以创建新文件,这点和‘w’类类似,并且默认指针在内容的最后面。

2、示例说明

示例1:r ---只读模式

注意:test2.txt 必须文件是已存在的。顺便说一下字符编码。因为Windows操作系统默认字符编码为GBK,而Python默认Unicode.utf-8,如果不写“ encoding=‘utf-8' "就会报错。

一开始在自己建立的目录下创建文本文件,文本文件内容为‘123’。

书写代码:用with方式打开文件,可以在文件读写执行完毕后自动关闭文件,不用手动去添加文件.close()。这也是with方式打开文件的常用写法。

with open(r'E:\python编程练习\文件读写\text.txt', 'r', encoding = 'utf-8') as f:
    reader = f.readlines() #用readlines()读取所有文本
print(reader)

上图为显示结果。

Model 2: r+ ---可读可写模式

file = open(r'E:\python编程练习\文件读写\text.txt', 'r+', encoding = 'utf-8')
file.write('业精于勤')   #清空源文件内内容,再写入text.txt文件后面

print(file.seek(0))      #seek(0)代表将光标回到文件头并且返回一个整型数字0,如果要重新从头到尾读一遍,文件指针必须回到文件头,
                         # 如果没有这行返回光标命令,则最后一行代码不会打印任何东西
print(type(file.seek(0)))
print(file.read())        #读取打印text.txt文件的全部内容
file.close()              #关闭文件

Model 3: rb ---以二进制方式读取文件

with open(r'E:\python编程练习\文件读写\text.txt', 'rb') as f:
    reader = f.readlines() #用readlines()读取所有文本,返回的是二进制
print(reader)

Model 4: w ---只写模式

with open(r'E:\python编程练习\文件读写\text.txt', 'w', encoding = 'utf-8') as f:
    writer = f.write('行成于思') #清空原文件内容,再写入新内容

原文件内容

程序执行后原文件内容

Model 5: w+ ---写读模式

with open(r'E:\python编程练习\文件读写\text.txt', 'w+', encoding = 'utf-8') as f:
    writer = f.write('行成于思覆盖') #清空原文件内容,再写入新内容

执行结果

Model 6: wb+ ---以二进制方式读写文件

with open(r'E:\python编程练习\文件读写\text.txt', 'wb+') as f:
    writer = f.write('行成于思覆盖'.encode('utf-8')) #需要添加编码方式encode('utf-8')

Model 7: a ---追加写模式

with open(r'E:\python编程练习\文件读写\text.txt', 'a', encoding = 'utf-8') as f:
    writer = f.write('行成于思') #在原文后面添加内容

最终结果

Model 8: a+ ---追加读写模式


with open(r'E:\python编程练习\文件读写\text.txt', 'a+', encoding = 'utf-8') as f:
    writer = f.write('行成于思123') #在原文后面添加内容
    f.seek(0)   #将光标指向文件头
    print(f.readline()) #打印文件第一行内容

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃鱼的Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值