我正在尝试修改上传到我的 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)
Run Code Online (Sandbox Code Playgroud)
我将其上传到烧瓶并使用访问它
f = request.files['data_file']
Run Code Online (Sandbox Code Playgroud)
当我通过上面的代码运行它,用 open(f) 替换 open('example.csv') 时,出现以下错误
coercing to Unicode: need string or buffer, FileStorage found
Run Code Online (Sandbox Code Playgroud)
我发现问题出在这里的文件类型。我无法在我的文件上使用 open ,因为 open 正在查找文件名,并且当文件上传到 Flask 时,它是传递给 open 命令的文件的实例。但是,我不知道如何进行这项工作。我尝试跳过 open 命令并仅使用 data = f.read() 但这不起作用。有什么建议么?
谢谢
FileStorage是传入数据的类似文件的包装器。您可以直接将其传递给read_csv.
pd.read_csv(request.files['data_file'])
Run Code Online (Sandbox Code Playgroud)
您很可能不应该对replace数据执行这些调用,因为 CSV 模块应该处理该问题,而简单的替换可能会损坏引用列中的数据。但是,如果您仍然需要,您可以像以前一样读出数据。
data = request.files['data_file'].read()
Run Code Online (Sandbox Code Playgroud)
如果您的数据混合了多种引用样式,则应修复数据源。
| 归档时间: |
|
| 查看次数: |
8163 次 |
| 最近记录: |