python open函数关于w+ r+ 读写操作的理解

今天看了open函数,看到w+ r+ a+ 这种可读可写的操作。尝试了几次发现,理解很混乱。运行f.close()之后,写入操作才算是完成。那么f关闭之后,再去读它就会出现报错。所以我自己做了一个对比测试:

1、新建文档,里面存入(hello python world),采用 open的 r+模式 下面图片是代码,运行过程,文档结果 一起截图的

先测试,先读后写:

可以发现原来存放在文档里的字符被读出来,新写进去的不能被立即读出到r中再输出到命令行,但是成功写入到文档。 随后第二个f.read()开始对文档进行读操作,但是什么都没有读出来(所以print只输出了换行符,有一行空白),因为上一个read已经将字符取走(我个人这么理解它),还因为这个原因,我们的写入操作是跟在原来的字符后面的,而不是覆盖它。


再测试先写后读:先将文档内容更改回(hello python world)

可以看到先写入成功,并且是覆盖掉了原有的部分内容(中文字符占两个英文的位置)。未被覆盖的内容因为没有进行任何变动操作,便被r.read()读出并print到命令行

2、同样的方法测试 w+, 可以看到原有内容被完全覆盖。第一次的read()也未读取到内容,print输出了一行空白。说明w+不能直接读出内容。 那所谓的读写是怎么理解? 日后再说


若将read()函数都删掉则出现如下图情况,不会输出空白,则说明print函数有工作,只是没有内容,默认输出了‘换行符’


总结:

r 只能读 (带r的文件必须先存在)
r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容 
w+ 可读可写 如果文件存在 则覆盖整个文件不存在则创建  //要close 之后才算完成写入
w 只能写 覆盖整个文件 不存在则创建 
a 只能写 从文件底部添加内容 不存在则创建 
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建               r+可读可写,不会创建不存在的文件。如果直接写文件,则从顶部开始写,覆盖之前此位置的内容,如果先读后写,则会在文件最后追加内容。


  • 17
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值