Я пытаюсь выполнить базовый анализ файлов в каталоге в Python 3. Этот код отлично работает в Python 2.7, но я не могу понять, в чем проблема в Python 3.2.
import sys, os, re
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)`