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

来源:互联网 发布:win32多线程编程实例 编辑:程序博客网 时间:2024/05/22 15:27

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

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

r打开不存在的文件:

## *******************************文件读写模式:r *********************************f = open(unicode(r"C:\测试\22222样.txt", "utf8"), "r")str1 = f.read()print str1f.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 str1f.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 0
原创粉丝点击