###文件读写
昨天纠结了半天的文件读写问题,在论坛上问了大神以后发现。。。是书上印错了!!!给跪了。。Orz…
- The most commonly-used values of mode are ‘r’ for reading, ‘w’ for writing (truncating the file if it already exists), and ‘a’ for appending (which on some Unix systems means that all writes append to the end of the file regardless of the current seek position).
Modes ‘r+’, ‘w+’ and ‘a+’ open the file for updating (reading and writing); note that ‘w+’ truncates the file.
英文文档出处中文的意思是这样的:(我自己翻译的)+的作用是允许读和写。r的作用只是对已存在的文件,w的是创建新文件,如果不存在的话。所以还是有些区别的。如果文件已存在,那么可以认为是一样的。我不觉得有什么非要用+的情况,打开文件对象多的话没准就忘了。
说了这么多,还是总结一下吧
1
2
3
4
5
6#文件模式
#a以追加模式打开,只能写
#r+,w+,a+ 读写模式,区别如下
#r+从最开始覆盖写(所以我的那种,读源文件的字符串,修改,重新写回文件的想法是不。。。。成立的???不对啊,不行,我还得去试一下,但是还是失败了,在写的时候会报错)
#w+清除文件后写
#a+从末尾追加###f.read()
之前用它的时候发现,第一次调用f.tell()是空的,原因就在这儿,因为Python在读取一个文件时,会记住其在文件中的位置,如果第二次仍需要从头读取,则需要调用f.seek(0)重新从头开始读取。
而且
f.tell() #返回文件操作标记的当前位置,以文件的开头为原点
###文件读写最好的解决办法,写两个语句来获取读和写的权限。exp如下:
1
2
3
4
5
6
7
8
9
10import os
o=open('d:'+os.sep+'statistic.txt','r+')
content2=o.read()
content2+='bbb'
print content2
o.close()
o2=open('d:'+os.sep+'statistic.txt','w+')
o2.write(content2)
o2.close()
编译结果:aaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
[Finished in 0.1s]
###中文输出
在运行一个和中文输出相关的程序时,会有[Decode error - output not utf-8]
的报错,修改程序头,添加# -*- coding: gbk -*-
无效,utf-8无效,最终解决办法为:修改C:\Users\Administrator\AppData\Roaming\Sublime Text 2\Packages\Python
目录下的Python.sublime-build
文件1
2
3
4
5
6{
"cmd": ["C:/Python33/python.exe", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
"encoding": "cp936"
}
成功输出中文!1
2
3
4
5
6<a href="http://tejia.taobao.com/?spm=1.7275165.a214d7z.32" data-spm="d1" class="">天天特价 </a>
<a href="http://try.taobao.com/?spm=1.7275165.a214d7z.33" data-spm="d2" class=" c-2 ">免费试用 </a>
<a href="http://qing.taobao.com/?spm=1.7275165.a214d7z.34" data-spm="d3" class=" c-3 ">清仓 </a>
<a href="http://qiang.taobao.com/?spm=1.7275165.a214d7z.35" data-spm="d5" class="">一元起拍 </a>
<a href="http://taojinbi.taobao.com/?spm=1.7275165.a214d7z.36" data-spm="d4" class=" c-2 ">淘金币 </a>
<a href="http://ye.taobao.com/?spm=1.7275165.a214d7z.37" data-spm="d6" class=" c-3 ">夜抢购 </a>
###Python Web 开发学习实录
终于看完了