Python:无法从 FileStorage 对象读取

Urm*_*Lmn 5 python csv io flask

我有一个.xlsx文件并将其转换为一个.csv文件。然后我将.csv文件上传到我编写的 Python 脚本中,但抛出错误。

由于文件是通过 HTTP 上传的,因此我使用file = request.files['file']. 这将返回一个类型为 的文件FileStorage。在我尝试用对象读取它之后,StringIO如下所示:

io.StringIO(file.stream.read().decode("UTF8"), newline=None)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: initial_value must be str or None, not bytes
Run Code Online (Sandbox Code Playgroud)

FileStorage我还尝试以这种方式读取对象文件:

file_data = file.read().decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 97: invalid start byte
Run Code Online (Sandbox Code Playgroud)

也许有趣的是,我可以使用以下代码直接读取该文件,即作为 csv 文件:

with open('file_path', 'r') as file:
   csv_reader = csv.reader(file, delimiter=";")
   ...
Run Code Online (Sandbox Code Playgroud)

但由于我试图从上传按钮获取文件,即input类型为 的 HTML 元素file,如上所述,我得到了一个FileStorage对象,但我无法读取它。

任何人都知道我该如何处理这个问题?

先感谢您!

nbw*_*ard 6

可能是它没有编码为utf-8. 尝试将其解码为latin-1

file_data = file.read().decode("latin-1")
Run Code Online (Sandbox Code Playgroud)