python 中的r+和w+注意细节

这是一次学习过程中的问题记录。

r 就是直接打开已存在的文件,不存在会报错
w 就是打开文件,文件如果不存在,就会新建一个文件

r打开不存在的文件:

## *******************************文件读写模式:r *********************************
f = open(unicode(r"C:\测试\22222样.txt", "utf8"), "r")
str1 = f.read()
print str1
f.close()s()

结果:
这里写图片描述

w 打开不存在的文件,则会创建一个文件
image_1b4snk77j70r13jj1bp411olft39.png-25.2kB
结果:
image_1b4snko6j5oi1qhk9712m5157pm.png-18.2kB



关键两个: r+ 和 w+


r+ 是打开一个可读写的文件,文件必须存在,而且在读之后,需要加一句:f.seek(),不然会报错
image_1b4snsafg18jit2p107f1o5j1q6f13.png-41.5kB
结果:
image_1b4snt31l14si1apip0k1rgu1pmp1g.png-31.1kB

正确的操作应该为:

## *******************************文件读写模式:r+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+')
str1 = f.read()
print str1
f.seek(00)
f.write("this is seek(0)")

# f.flush()
f.close()

原始文件内容为:
image_1b4socta313p81qhe18ck9g51o4p2n.png-17.1kB

seek(0)操作结果:
image_1b4soe71714mf1gfp15r01hoa1civ34.png-19.4kB
image_1b4soeu7u1bkh1k041s1bt11t5f3h.png-16.3kB

当然,如果你是直接写入,没有read这个操作,那么就没有问题,不需加f.seek()

## *******************************文件读写模式:r+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+')

f.write("zhi jie xie ru")
f.close()

结果:
image_1b4soqae11k0geal6e41eftphq5i.png-14.8kB


w+ 如果先写入,会将原内容抹去(这其实和w一样),再读的时候要注意加个f.seek()。如果先读取,会读取不到内容(因为用的是w+,会先抹去文件里面的内容),直接就写入了。
原文件:
image_1b4sov3nlaho19nj103knhk1lde5v.png-16.1kB
直接先写入:

## *******************************文件读写模式:w+ *********************************
f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'w+')
f.write("***")
f.seek(0)
print f.read()
f.close()

结果:
image_1b4sp28jn18js1m4685l1hqn1g6e6c.png-17.2kB
image_1b4sp2jgk4lt1ir1da3r5u1f2a6p.png-11.6kB

直接读取:
image_1b4spbsrk1lrpa86vur8uh1b7q76.png-34.2kB

结果:
image_1b4spcflim2d97mffvpttki47j.png-19.2kB

image_1b4spcqua16qohgc1kii97fske80.png-12kB

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值