Ошибка Python CSV: строка содержит NULL-байт, но в файле не обнаружено NULL-байта

Я знаю, что этот вопрос был опубликован несколько раз, но я попробовал большинство опубликованных решений и не смог разобраться в своей проблеме.

Во-первых, я пытаюсь прочитать некоторые текстовые файлы, данные с разделителями табуляции и, используя приведенный ниже код, показывает мне следующую ошибку:

для строки в читателе:

Ошибка: строка содержит NULL байт

Код в основном пытается получить некоторую информацию из определенных столбцов. Его сокращенная версия ниже:

  with open('07table.txt', encoding = "utf-8", errors='ignore') as fo:
                reader = csv.reader(fo, delimiter='\t', quoting=csv.QUOTE_MINIMAL)

На прошлой неделе я пытался выяснить, содержат ли файлы нулевые байты. Я использовал приведенный ниже код, чтобы проверить, правда ли это, и, к своему удивлению, я не нашел в файлах нулевых байтов.

if '\x00' in open('07table.txt').read():
    print ("you have null bytes in your input file")
else:
    print ("you don't")

На всякий случай я также запустил код, который заменяет нулевые байты в моих txt файлах, но у меня все еще та же ошибка.

Еще я пробовал перейти на старую версию Spyder и понизить версию python до 3.5.14, потому что я подумал, что это может быть проблема с установленной мной средой. Это имело некоторые последствия в том смысле, что мой код успешно читает два файла, которые ранее должны были содержать нулевые байты. Однако, когда он проходит мимо этих двух файлов, код отображает ту же ошибку, что и выше.

На данный момент я очень уверен, что файлы не содержат нулевых байтов. Есть мысли о том, почему я мог получить эту ошибку?

Спасибо большое!

1 ответ

Решение

Я нашел, в чем проблема. Я читал файлы с внешнего жесткого диска, отформатированного в NFTS, в то время как код выполнялся на macOS, отформатированной в HFS.

После форматирования внешнего диска в соответствии с форматированием на моем ноутбуке проблема нулевых байтов исчезла.

Другие вопросы по тегам