Python: невозможно прочитать из объекта FileStorage - PullRequest
0 голосов
/ 05 октября 2018

У меня есть файл .xlsx и преобразован в файл .csv.Затем я загружаю файл .csv в написанный мной Python-скрипт, но выдается ошибка.

Поскольку файл загружается через HTTP, я обращаюсь к нему с помощью file = request.files['file'].Это возвращает файл типа FileStorage.После того, как я пытаюсь прочитать его с помощью объекта StringIO следующим образом:

io.StringIO(file.stream.read().decode("UTF8"), newline=None)

я получаю следующую ошибку:

TypeError: initial_value must be str or None, not bytes

Я также попытался прочитать файлиз FileStorage объект таким образом:

file_data = file.read().decode("utf-8")

и я получаю следующую ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 97: invalid start byte

Может быть, интересно отметить, что я могу читатьфайл напрямую, т.е. как файл csv, со следующим кодом:

with open('file_path', 'r') as file:
   csv_reader = csv.reader(file, delimiter=";")
   ...

Но так как я пытаюсь получить файл с помощью кнопки загрузки, то есть HTML-элемента input типа file, как упоминалось выше, я получаю FileStorage объект, который я не могу прочитать.

У кого-нибудь есть идеи, как я могу подойти к этому?

Спасибозаранее!

1 Ответ

0 голосов
/ 05 октября 2018

Возможно, он не закодирован в utf-8.Попробуйте расшифровать его в latin-1 вместо:

file_data = file.read().decode("latin-1")
...