读书人

请问 python 的代码异常在哪里

发布时间: 2012-09-22 21:54:54 作者: rapoo

请教 python 的代码错误在哪里?
请教 python 的代码错误在哪里?

Python code
# 以下是统计程序代码行数的代码# 我的目的是统计 d:\ywgl2 下,所有的 *.ini,*.bas,*.frm 的文件总行数,# 但是有一个问题,# Traceback (most recent call last):#File "D:/ywgl2/a2.py", line 13, in <module>#   data = f.read()# UnicodeDecodeError: 'gbk' codec can't decode bytes in position 598-599: illegal multibyte sequence# 不知以上提示是什么意思?import oslines_count = 0for roots,dirs,files in os.walk('d:/ywgl/'):    for file in files:        if file[-4:]=='.ini' or file[-4:]=='.bas':            f = open(os.path.join(roots, file))            data = f.read()            f.close()            lines_count += data.count('\n')    print ("all lines count:%d" %lines_count)


[解决办法]
读取的文件中包含有gbk编码的汉字
[解决办法]
你用py3k的吧,读文件时会用系统默认编码进行解码,试试改用2进制模式读取不要解码,这样估计也会快点。另外,检测最后一个字符不是'\n'的话,行数要加1,代码类似:
...
f = open(os.path.join(roots, file), 'rb')
data = f.read()
f.close()
lines_count += data.count(b'\n')
if not data.endswith(b'\n'):
lines_count += 1
[解决办法]
使用GBK解码
[解决办法]
Python code
import codecs..    f = codecs.open(os.path.join(roots, file), 'r', 'gbk').. 

读书人网 >perl python

热点推荐