我有一个.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
对象,但我无法阅读。
任何人都知道我该如何处理?
提前谢谢!
答案 0 :(得分:1)
可能是因为它未使用utf-8
进行编码。尝试将其解码为latin-1
:
file_data = file.read().decode("latin-1")