Я получил большой набор файлов sas, которые все должны изменить их файловые пути.Проблема UnicodeDecode - запись в файл SAS
Код я написал для того, что задачи выглядит следующим образом:
import glob
import os
import sys
os.chdir(r"C:\path\subdir")
glob.glob('*.sas')
import os
fileLIST=[]
for dirname, dirnames, filenames in os.walk('.'):
for filename in filenames:
fileLIST.append(os.path.join(dirname, filename))
print fileLIST
import re
for fileITEM in set(fileLIST):
dataFN=r"//path/subdir/{0}".format(fileITEM)
dataFH=open(dataFN, 'r+')
for row in dataFH:
print row
if re.findall('\.\.\.', str(row)) != []:
dataSTR=re.sub('\.\.\.', "//newpath/newsubdir", row)
print >> dataFH, dataSTR.encode('utf-8')
else:
print >> dataFH, row.encode('utf-8')
dataFH.close()
Проблемы, у меня есть два раза: во-первых, кажется, что мой код не признает три последовательных периода, даже если разделенных обратным слэшем. Во-вторых, я получаю сообщение об ошибке «UnicodeDecodeError: кодек ascii не может декодировать байты ...»
Возможно ли, что файлы программы SAS (.sas) не являются utf-8? Если это так, это исправление как ? просто зная, что файл кодирования они используют
Полные отслеживающий выглядят следующим образом:.
Traceback (most recent call last):
File "stringsubnew.py", line 26, in <module>
print >> dataFH, row.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 671: ordinal not in range(128)
заранее спасибо
Проблема заключается с ASCII-кодек пытается декодировать то с не-ASCII байт, так что файлы не в UTF-8 не ваша проблема , Пожалуйста, включите полную обратную трассировку или, по крайней мере, какую строку генерирует исключение. – geoffspear
Файлы программ SAS могут быть UTF-8 или что-то еще (чаще всего wlatin1), в зависимости от кодировки сеанса, которые они были созданы/сохранены. – Joe
Wooble - просто добавлен трассировка к исходному сообщению. – user43885