Ошибка 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.
После форматирования внешнего диска в соответствии с форматированием на моем ноутбуке проблема нулевых байтов исчезла.