【问题标题】:Python: Cannot read from a FileStorage objectPython:无法从 FileStorage 对象读取
【发布时间】: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 对象,但我没有能够阅读它。

有人知道我该如何解决这个问题吗?

提前谢谢你!

【问题讨论】:

    标签: python csv flask io


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!这就是问题所在!
    猜你喜欢
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多