Форум сайта python.su
173
denveren0kВы что-то путаете. В файле данные в кодировке cp866. Их нужно декодировать в Юникод и дальше с Юникодом работать.
Пытаюсь обработать файл построчно с преобразованием line.encode('utf-8') но выдает ошибку
line = line.decode('cp866')
with codecs.open('workfile.txt', encoding='cp866') as f: for line in f: ...
Офлайн
0
reclosedev Вот спасибо все получилось. Теперь можно выдохнуть
Правда он все равно через опу делат немного вот скрипт перекодировки файла пинг
#!/usr/bin/env python open_file = open('C:\\python\workfile.txt', 'r') open_file1 = open('C:\\python\workfile1.txt', 'w') line = open_file.readline() for line in open_file: line = line.decode('cp866') open_file1.write(line.encode('utf-8')) open_file.close() open_file1.close()
по другому выдает ошибку.
Офлайн
857
если второй питон не обязателен, то можно поставить третий - там чтение из файла упрощено в плане кодировок
Офлайн
0
Попробую уже так дописать программку, если будут дальше такие же танцы с бубном поставлю 3-ий питон.
Офлайн
857
#!/usr/bin/env python3 def f(): with open('file.txt', 'w', encoding='cp866') as fout: print('абвг', file=fout) with open('file.txt', encoding='cp866') as fin: line = fin.readline() print(line) with open('file.txt', 'w', encoding='utf-8') as fout: print('абвг', file=fout) with open('file.txt', encoding='utf-8') as fin: line = fin.readline() print(line) if __name__ == '__main__': f()
[guest@localhost py]$ ./t.py
абвг
абвг
[guest@localhost py]$
Отредактировано py.user.next (Сен. 10, 2012 12:53:56)
Офлайн