【发布时间】:2019-03-10 23:52:16
【问题描述】:
我有一个.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 对象,但我没有能够阅读它。
有人知道我该如何解决这个问题吗?
提前谢谢你!
【问题讨论】: