【发布时间】:2011-08-29 05:59:46
【问题描述】:
我正在尝试在 Python 3 的目录中进行一些基本的文件解析。这段代码在 Python 2.7 中运行良好,但我无法弄清楚 Python 3.2 中的问题。
导入系统、操作系统、重新
filelist = os.listdir('/Users/sbrown/Desktop/Test')
os.chdir('/Users/sbrown/Desktop/Test')
for file in filelist:
infile = open(file, mode='r')
filestring = infile.read()
infile.close()
pattern = re.compile('exit')
filestring = pattern.sub('so long', filestring)
outfile = open(file, mode='w')
outfile.write(filestring)
outfile.close
exit
这是被抛出的错误:
Traceback (most recent call last):
File "/Users/bunsen/Desktop/parser.py", line 9, in <module>
filestring = infile.read()
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 3131: ordinal not in range(128)`
我正在解析的文件都是文本文件。我尝试在 utf-8 的方法参数中指定编码,但这不起作用。有任何想法吗?提前致谢!
如果我将编码指定为 utf-8,则会抛出以下错误:
Traceback (most recent call last):
File "/Users/sbrown/Desktop/parser.py", line 9, in <module>
filestring = infile.read()
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 3131: ordinal not in range(128)`
【问题讨论】:
标签: encoding io python-3.x