python 中的r+和w+注意细节
2016-12-26 16:50
211 查看
这是一次学习过程中的问题记录。
r 就是直接打开已存在的文件,不存在会报错
w 就是打开文件,文件如果不存在,就会新建一个文件
r打开不存在的文件:
结果:
![](https://img-blog.csdn.net/20161226125039480?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlydWlZYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
w 打开不存在的文件,则会创建一个文件
![](http://static.zybuluo.com/yangJirui/03ihb1kudds2thons9pad9kl/image_1b4snk77j70r13jj1bp411olft39.png)
结果:
![](http://static.zybuluo.com/yangJirui/5eb7fmmqxhvdhwyim0hj5er6/image_1b4snko6j5oi1qhk9712m5157pm.png)
![](http://static.zybuluo.com/yangJirui/7pe1pztvpuh4mcdza2oxktpd/image_1b4snsafg18jit2p107f1o5j1q6f13.png)
结果:
![](http://static.zybuluo.com/yangJirui/gl0op997en1oyo2aquspggq0/image_1b4snt31l14si1apip0k1rgu1pmp1g.png)
正确的操作应该为:
原始文件内容为:
![](http://static.zybuluo.com/yangJirui/qucb5sdw5dpg52cgnp1ca8bn/image_1b4socta313p81qhe18ck9g51o4p2n.png)
seek(0)操作结果:
![](http://static.zybuluo.com/yangJirui/0qq06rsuz5gvoxckyb40ml9n/image_1b4soe71714mf1gfp15r01hoa1civ34.png)
![](http://static.zybuluo.com/yangJirui/c6obxkflp0je97tm7ylkv0gm/image_1b4soeu7u1bkh1k041s1bt11t5f3h.png)
当然,如果你是直接写入,没有read这个操作,那么就没有问题,不需加f.seek()
结果:
![](http://static.zybuluo.com/yangJirui/1mv44xenevm0f0oo39vr9dgc/image_1b4soqae11k0geal6e41eftphq5i.png)
w+ 如果先写入,会将原内容抹去(这其实和w一样),再读的时候要注意加个f.seek()。如果先读取,会读取不到内容(因为用的是w+,会先抹去文件里面的内容),直接就写入了。
原文件:
![](http://static.zybuluo.com/yangJirui/kl5h1jhf9r0i523tvz34yr37/image_1b4sov3nlaho19nj103knhk1lde5v.png)
直接先写入:
结果:
![](http://static.zybuluo.com/yangJirui/8zc6s0dz09p14mzmeyz4fpwe/image_1b4sp28jn18js1m4685l1hqn1g6e6c.png)
![](http://static.zybuluo.com/yangJirui/14eeczwbo2hcj0knjkj8r66l/image_1b4sp2jgk4lt1ir1da3r5u1f2a6p.png)
直接读取:
![](http://static.zybuluo.com/yangJirui/0lmun19h7q4a7psw8o1pbc5j/image_1b4spbsrk1lrpa86vur8uh1b7q76.png)
结果:
![](http://static.zybuluo.com/yangJirui/59moges446qo0vk03wyk07mr/image_1b4spcflim2d97mffvpttki47j.png)
r 就是直接打开已存在的文件,不存在会报错
w 就是打开文件,文件如果不存在,就会新建一个文件
r打开不存在的文件:
## *******************************文件读写模式:r ********************************* f = open(unicode(r"C:\测试\22222样.txt", "utf8"), "r") str1 = f.read() print str1 f.close()s()
结果:
w 打开不存在的文件,则会创建一个文件
![](http://static.zybuluo.com/yangJirui/03ihb1kudds2thons9pad9kl/image_1b4snk77j70r13jj1bp411olft39.png)
结果:
![](http://static.zybuluo.com/yangJirui/5eb7fmmqxhvdhwyim0hj5er6/image_1b4snko6j5oi1qhk9712m5157pm.png)
关键两个: r+ 和 w+
r+ 是打开一个可读写的文件,文件必须存在,而且在读之后,需要加一句:f.seek(),不然会报错![](http://static.zybuluo.com/yangJirui/7pe1pztvpuh4mcdza2oxktpd/image_1b4snsafg18jit2p107f1o5j1q6f13.png)
结果:
![](http://static.zybuluo.com/yangJirui/gl0op997en1oyo2aquspggq0/image_1b4snt31l14si1apip0k1rgu1pmp1g.png)
正确的操作应该为:
## *******************************文件读写模式:r+ ********************************* f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+') str1 = f.read() print str1 f.seek(0,0) f.write("this is seek(0)") # f.flush() f.close()
原始文件内容为:
![](http://static.zybuluo.com/yangJirui/qucb5sdw5dpg52cgnp1ca8bn/image_1b4socta313p81qhe18ck9g51o4p2n.png)
seek(0)操作结果:
![](http://static.zybuluo.com/yangJirui/0qq06rsuz5gvoxckyb40ml9n/image_1b4soe71714mf1gfp15r01hoa1civ34.png)
![](http://static.zybuluo.com/yangJirui/c6obxkflp0je97tm7ylkv0gm/image_1b4soeu7u1bkh1k041s1bt11t5f3h.png)
当然,如果你是直接写入,没有read这个操作,那么就没有问题,不需加f.seek()
## *******************************文件读写模式:r+ ********************************* f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'r+') f.write("zhi jie xie ru") f.close()
结果:
![](http://static.zybuluo.com/yangJirui/1mv44xenevm0f0oo39vr9dgc/image_1b4soqae11k0geal6e41eftphq5i.png)
w+ 如果先写入,会将原内容抹去(这其实和w一样),再读的时候要注意加个f.seek()。如果先读取,会读取不到内容(因为用的是w+,会先抹去文件里面的内容),直接就写入了。
原文件:
![](http://static.zybuluo.com/yangJirui/kl5h1jhf9r0i523tvz34yr37/image_1b4sov3nlaho19nj103knhk1lde5v.png)
直接先写入:
## *******************************文件读写模式:w+ ********************************* f = open(unicode(r"C:\测试\2样.txt", "utf8"), 'w+') f.write("***") f.seek(0) print f.read() f.close()
结果:
![](http://static.zybuluo.com/yangJirui/8zc6s0dz09p14mzmeyz4fpwe/image_1b4sp28jn18js1m4685l1hqn1g6e6c.png)
![](http://static.zybuluo.com/yangJirui/14eeczwbo2hcj0knjkj8r66l/image_1b4sp2jgk4lt1ir1da3r5u1f2a6p.png)
直接读取:
![](http://static.zybuluo.com/yangJirui/0lmun19h7q4a7psw8o1pbc5j/image_1b4spbsrk1lrpa86vur8uh1b7q76.png)
结果:
![](http://static.zybuluo.com/yangJirui/59moges446qo0vk03wyk07mr/image_1b4spcflim2d97mffvpttki47j.png)
![](http://static.zybuluo.com/yangJirui/9m0u7fp7c5jb3p59rvs59nmq/image_1b4spcqua16qohgc1kii97fske80.png)
相关文章推荐
- Python Scrapy 自动爬虫注意细节(1)
- Python Scrapy 自动爬虫注意细节(3)
- python 多线程 join 的 细节问题 注意使用事项
- Python函数的几点需要注意的细节
- Python Scrapy 自动爬虫注意细节(2)
- 鱼c笔记——Python正则表达式(四):search()、findall()方法要注意的细节及非捕获组
- python连接mysql数据库 案例 查看数据 注意细节
- Python中数据类型变量,编码以及格式化注意细节O(∩_∩)O
- Python 字典(dict)细节及注意事项
- C需要注意的细节
- 菜鸟学Python(6):在Linux下用C扩展Python要注意的一个问题
- 注意细节
- 注意:足以一分钟毁灭公司的30个细节
- C#中用SqlDataAdapter修改数据库中的表(源码+注意的细节)
- 2级C注意事项:都是些烦人的细节和抠门问题
- c语言注意的小细节
- 创业要有创意--应当注意的八大细节
- if __name__ (python学习笔记一,注意前面是双下划线)
- 学习Python中,总结一些语法相关注意点
- 注意细节:CSDN Blog和博客园的出错界面