Со следующим кодом:
import pandas as pd
filename = r"/path/to/my/file.csv"
with open(filename) as f:
data_frame = pd.read_csv(f,
usecols=['col1', 'col2'],
parse_dates=['DateProd', 'DateStart', 'DateEnd'],
header=0,
delimiter=';',
encoding='latin-1')
print(data_frame)
Когда это выполняется локально, он печатает ожидаемый кадр данных с надлежащим акцентуацией.При выполнении в задаче воздушного потока на удаленном работнике происходит сбой со следующей ошибкой:
UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xe9 в позиции 2581: недопустимый байт продолжения
При просмотре полной трассировки отладочной цепочки (извините, конфиденциальная информация не может быть полностью предоставлена), я вижу в трассировке стека, что определенно задано encoding = 'latin-1', и он все еще не работаетс ошибкой UnicodeDecodeError.Кто-нибудь заметил подобную проблему?Я бегал кругами, пытаясь использовать как можно больше кодировок, но, похоже, ничего не работает.
Я забыл упомянуть, что этот файл является удаленным файлом на общем ресурсе samba.Я пытаюсь прочитать его напрямую с помощью smbclient.open () или скопировать его локально, а затем открываю, получаю тот же результат: UnicodeDecodeError.Когда я пытаюсь сделать то же самое локально (и читая напрямую из общего ресурса samba, или копируя его), все выглядит нормально, и я заметил, что мне даже не нужно указывать кодировку, он найдет ее автоматически, и ударения будутотображается правильно.
Еще одно обновление: кажется, что файл читается из общей папки samba или нет, не имеет значения.Мне удалось запустить образ докера, который используется на удаленном работнике, и я могу воспроизвести эту проблему со всем, что размещено локально, когда я открываю файл раньше, когда я полностью читаю его перед тем, как передать его пандам, или просто я даюимя файла для read_csv.
Кажется, что движок не имеет значения: указание engine = 'python' или engine = 'c' дает те же результаты.
Другое обновление: похоже, чтота же самая проблема также происходит со свежим образом докера Ubuntu.Я предполагаю, что есть некоторые локали, которые нужно установить, прежде чем они смогут их проанализировать.