Продолжайте читать NUL

Я получил файл .dat, закодированный в ANSI, который содержит символы NUL (не только!).

Я не хочу читать его в объекте str, чтобы вырезать что-то во всей полученной строке.

Но file.read() останавливается, когда достигается первый NUL.

Я потерялся :)

Мой код:

file=open(source, mode='rt')
fulltext=file.read()
print(fulltext)

NUL показывается с помощью Notepad++. У меня Windows XP с PortablePython 3.2. Это специальный файл DAT, который можно редактировать с помощью блокнота как текст.


person mat.viguier    schedule 21.11.2012    source источник
comment
Я не думаю, что EOF и NUL (вы имеете в виду только 0?) — это одно и то же, поэтому file.read() не должно останавливаться. Можете ли вы показать нам код, который вы используете, и сообщить нам 1) версию Python, которую вы используете, и 2) на какой платформе вы работаете?   -  person    schedule 21.11.2012
comment
Возможно, проблема в pyscripter. Связанная боковая панель показала this , который имеет аналогичную проблему (сокет . вместо файла), где разрешалось не использовать pyscripter.   -  person    schedule 21.11.2012
comment
СПАСИБО Эверт! Я не могу платить за такую ​​IDE, как Wing IDE. Я попробовал свой код в пакетном файле DOS... с python.exe вместо pythonw.exe.   -  person mat.viguier    schedule 21.11.2012
comment
и это работает ХОРОШО! СПАСИБО Эверт.   -  person mat.viguier    schedule 21.11.2012


Ответы (2)


Если вы хотите прочитать такие байты, как 0, скорее всего, ваш файл является двоичным файлом. Читать в двоичном режиме rb вместо текстового режима rt.

person Kos    schedule 21.11.2012
comment
\x00 - это то, как вы кодируете байт NUL в строковых литералах Python. Файл, вероятно, читается правильно, поэтому посмотрите, как вы его печатаете. - person Kos; 21.11.2012
comment
Но 13 МБ данных все равно не поместятся на экране. - person Kos; 21.11.2012

Как прокомментировал Эверт в моем вопросе, проблема была сосредоточена на использовании Pyscripter! Так что вопрос закрыт :)

person mat.viguier    schedule 21.11.2012