Загрузка файла как utf-8 в Python3.x - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь загрузить файл в кодировке utf-8. В Python2.x я использовал что-то вроде:

lines = filearg.file.readlines()

В Python3.2 a получить итератор байтовых потоков. Я думаю, можно сделать что-то вроде:

lines = [line.decode() for line in [filearg.file.readlines()]

Интересно, не существует ли более простого способа? Для обычных файлов я просто пишу:

with open(path) as f: ## utf-8 is the default<br> lines = list[f.readlines()]

и я получаю список строк utf-8.

- тсф

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Без дополнительной информации (какую платформу вы используете?) Мы не знаем, есть ли хороший способ сделать это. Но в целом:

HTTP-сообщения основаны на байтах: необязательно указана кодировка, и, если она есть, она может быть неправильной. Поэтому имеет смысл дать вам байты и дать вам понять, что с ними делать. Если вам нужен объект, похожий на текстовый файл, вы можете использовать io.TextIOWrapper :

file = io.TextIOWrapper(filearg.file, 'utf-8')
0 голосов
/ 20 февраля 2012

Аналогичный способ, используемый в python2.x:

import codecs
with codecs.open(path, encoding='utf-8') as f:
    lines = [l for l in f]

Вы можете попробовать это в python3.x

...