Вопрос по python, encoding – Чтение файла UTF-8 с кодеками в IronPython

10

У меня есть файл .csv, закодированный в UTF-8, который содержит латинские и кириллические символы.

<code>;F1;F2;abcdefg3;F200
;ABSOLUTE;NOMINAL;NOMINAL;NOMINAL
o1;1;USA;Новосибирск;1223
</code>

Я пытаюсь выполнить следующий сценарий в IronPython 2.7.1:

<code>import codecs

f = codecs.open(r"file.csv", "rb", "utf-8")
f.next()
</code>

Во время выполнения f.next () возникает исключение:

<code>Traceback (most recent call last):
  File "c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\1.1\visualstudio_py_repl.py", line 492, in run_file_as_main
    code.Execute(self.exec_mod)
  File "<string>", line 4, in <module>
  File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 684, in next
    return self.reader.next()
  File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 615, in next
    line = self.readline()
  File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 530, in readline
    data = self.read(readsize, firstline=True)
  File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 477, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeEncodeError: ('unknown', '\x00', 0, 1, '')
</code>

В то же время в CPython 2.7 скрипт работает корректно. Также в IronPython 2.7.1 работает следующий скрипт:

<code>import codecs

f = codecs.open(r"file.csv", "rb", "utf-8")
f.readlines()
</code>

Кто-нибудь знает, что может вызвать такое странное поведение?

Ваш Ответ

2   ответа
2

next() обрабатывает кодеки. Можешь пожалуйстаоткрыть вопрос с файлами для воспроизведения прилагается?

0

rb & quot; параметр, попробуйте использовать & r;

f = codecs.open(r"file.csv", "r", "utf-8")
Я пытался удалить "b". Исключение исчезло, но символы кириллицы были расшифрованы неправильно. Кроме того, согласно документации, StreamReader принимает поток, который должен быть файловым объектом, открытым для чтения (двоичных) данных. usahara

Похожие вопросы