Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2012 11:57:57

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Сохранения команды ping в файл.

denveren0k
Пытаюсь обработать файл построчно с преобразованием line.encode('utf-8') но выдает ошибку
Вы что-то путаете. В файле данные в кодировке cp866. Их нужно декодировать в Юникод и дальше с Юникодом работать.
line = line.decode('cp866')
Или использовать codecs
with codecs.open('workfile.txt', encoding='cp866') as f:
    for line in f:
        ...
http://habrahabr.ru/post/135913/
http://docs.python.org/howto/unicode.html

Офлайн

#2 Сен. 9, 2012 13:59:42

denveren0k
Зарегистрирован: 2012-09-06
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранения команды ping в файл.

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()
Приходится два раза кодировать получается по другому выдает ошибку.
Ну да пофиг потом разберусь, спасибо все кто принимал посильно участие, в моем тупняке

Офлайн

#3 Сен. 10, 2012 01:00:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Сохранения команды ping в файл.

если второй питон не обязателен, то можно поставить третий - там чтение из файла упрощено в плане кодировок



Офлайн

#4 Сен. 10, 2012 01:07:42

denveren0k
Зарегистрирован: 2012-09-06
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранения команды ping в файл.

Попробую уже так дописать программку, если будут дальше такие же танцы с бубном поставлю 3-ий питон.

Офлайн

#5 Сен. 10, 2012 12:53:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Сохранения команды ping в файл.

#!/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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version