Форум сайта python.su
Здравствуйте Всем.
Помогите новичку разобраться (Python 3.4)
Есть такой файл в кодировке utf-8(без BOM) text-data.txt, содержит одну строку:
Привет Мир!
я пытаюсь читать его в текстовом режиме в консоли:
open(r'D:\python\text-data.txt').read()
open(r'D:\python\text-data.txt', 'rb').read().decode()
sys.getdefaultencoding() # utf-8
def more(text, num_lines=15): lines = text.splitlines() # подобно split('\n') но без '' в конце while lines: chunk = lines[:num_lines] # от 0 до 15 линии lines = lines[num_lines:] # от 15 линии до конца for line in chunk: # печатаем линии от 0 до 15 print(line) if lines and input('More?') not in ['y', 'Y']: # Если еще остались линии на ззапрос 'More?' break # ответили иначе чем 'y' или 'Y' то на выход if __name__ == '__main__': import sys # если запускается как сценарий more(open(sys.argv[1]).read(), 10) # отобразить постранично содержимое # файла, указанного в командной строке
def more(text, num_lines=15): lines = text.splitlines() # подобно split('\n') но без '' в конце while lines: chunk = lines[:num_lines] # от 0 до 15 линии lines = lines[num_lines:] # от 15 линии до конца for line in chunk: # печатаем линии от 0 до 15 print(line.decode('utf-8')) if lines and input('More?') not in ['y', 'Y']: # Если еще остались линии на ззапрос 'More?' break # ответили иначе чем 'y' или 'Y' то на выход if __name__ == '__main__': import sys # если запускается как сценарий more(open(sys.argv[1], 'rb').read(), 10) # отобразить постранично содержимое # файла, указанного в командной строке
Отредактировано moskitos80 (Янв. 28, 2015 11:17:15)
Офлайн
14
moskitos80Python пытается открыть файл с системной кодировкой. В windows системной кодировкой является cp1251, по этому у тебя возникает ошибка.
“Содержимое файлов, открытых в текстовом режиме, интерпретируетсякак текст, состоящий из символов Юникода
open('file.txt', encoding='utf8')
Отредактировано alex925 (Янв. 28, 2015 14:23:01)
Офлайн
Спасибо alex925 по твоей наводке начал рыть в сторону системных кодировок и пр. в процессе наткнулся на интересный пост на хабре: Как я боролся с кодировками в консоли
Офлайн
857
moskitos80
в процессе наткнулся на интересный пост на хабре
тот пост
Всё ниженаписанное применимо к Python 2.x ветке
moskitos80Рыть не надо, это всё обходные варианты.
начал рыть в сторону системных кодировок
Офлайн
14
py.user.nextЭто только если работаешь в windows
Можно не указывать только тогда, когда файл в ascii.
Офлайн
14
moskitos80Это все не то и из другой степи.
в процессе наткнулся на интересный пост на хабре: Как я боролся с кодировками в консоли
Офлайн
857
alex925Если файл в ascii, можно нигде не указывать кодировку, потому что символы ascii отстаются неизменными во всех (на сегодняшний день) кодировках.py.user.nextЭто только если работаешь в windows
Можно не указывать только тогда, когда файл в ascii.
Отредактировано py.user.next (Янв. 29, 2015 14:12:12)
Офлайн
14
py.user.next
А, ты об этом. Да, я прогнал маленько, о другом подумал.
Офлайн