小编典典

打开已在Flask中上传的文件

python

我正在尝试修改上传到我的Flask应用程序中的csv。当我不通过烧瓶上载它时,我的逻辑工作得很好。

import pandas as pd
import StringIO
with open('example.csv') as f:
    data = f.read()

data = data.replace(',"', ",'")
data = data.replace('",', "',")
df = pd.read_csv(StringIO.StringIO(data), header=None, sep=',', quotechar="'")
print df.head(10)

我将其上传到烧瓶并使用

f = request.files['data_file']

当我通过上面的代码运行它,将open(’example.csv’)替换为open(f)时,出现以下错误

coercing to Unicode: need string or buffer, FileStorage found

我发现问题出在这里是文件类型。我无法在文件上使用open,因为open正在寻找文件名,并且当文件上传到flask时,它是传递给open命令的文件实例。但是,我不知道该如何做。我试过跳过open命令,仅使用data
= f.read(),但这不起作用。有什么建议?

谢谢


阅读 205

收藏
2021-01-20

共1个答案

小编典典

如果有人需要,请回答我自己的问题。

FileStorage对象具有.stream属性,该属性将是io.BytesIO

f  = request.files['data_file']
df = pandas.read_csv(f.stream)
2021-01-20