我有一个 .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=";")
...
但是由于我试图从上传按钮获取文件,即 file
类型的 input
HTML 元素,如上所述,我得到了FileStorage
对象,我无法读取它。
有人知道我该如何解决这个问题吗?
提前谢谢您!
最佳答案
可能不是用 utf-8
编码的。尝试将其解码为 latin-1
:
file_data = file.read().decode("latin-1")
关于Python:无法从 FileStorage 对象读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52666182/