Python:无法读取FileStorage对象

时间:2018-10-05 12:58:41

标签: python csv flask io

我有一个.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=";")
   ...

但是,由于如上所述,我试图从上传按钮(即类型为input的{​​{1}} HTML元素中获取文件,所以我得到了file对象,但我无法阅读。

任何人都知道我该如何处理?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

可能是因为它未使用utf-8进行编码。尝试将其解码为latin-1

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