读取文件方法:
- read() 读取整个文件
- readline () 读取下一行
- readlines() 读取整个文件到一个迭代器以供我们遍历(读取到一个list中,以供使用,大文件不适用太耗费内存)
文件迭代可用方法:
1.for … in …
with open("file") as fh:
for line in fh:
print(line.strip())
2.while fh.readline():
with open("file") as fh:
while True:
line=f.readline()
if line:
print (line)
else:
break
Ps:readline()每次调用返回一行,遍历文件每一行需要多次调用,如方法2。不可写成for line in fh.readline(),否则为在一行迭代
中文编码处理:
- decode解码
- encode编码
在需要转换的时候,使用显式转换。从字节解码成文本,用 var.decode(encoding),从文本编码成字节,用 var.encode(encoding)。依从str→(decode)→unicode,unciode→(encode)→str。
从外部读取数据时,默认它是字节,然后 decode 成需要的文本;同样的,当需要向外部发送文本时,encode 成字节再发送。
Ps:encode可以任意指定,decode需知道文本格式,如:python文件第一行的#coding=utf8,html中的等
中文乱码UL:http://www.cnblogs.com/testlife007/p/5163507.html
去除window下文本文档BOM头:
在window的环境下,保存的文本文档会加上三个字符0xEF 0xBB 0xBF的头部,这三个字符可能会影响对文本的读取,形成乱码,在这里记录下如何避免。如直接保存为ASCII编码的txt文件是不包含BOM头部的,文件另存为UFT-8的格式则出现BOM头乱码情况,方法如下:
#coding=utf-8
import codecs
data=open("xxx.txt").read()
if data[:3]==codecs.BOM_UTF8:
data = data[3:]
print data