当前位置: 首页 > 面试题库 >

打开已在Flask中上传的文件

巫马淳
2023-03-14
问题内容

我正在尝试修改上传到我的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(),但这不起作用。有什么建议?

谢谢


问题答案:

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

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

f  = request.files['data_file']
df = pandas.read_csv(f.stream)


 类似资料:
  • 在Flask中处理文件上传非常简单。 它需要一个enctype属性设置为的HTML表单,将该文提交到指定URL。 URL处理程序从对象中提取文件并将其保存到所需的位置。 每个上传的文件首先保存在服务器上的临时位置,然后再保存到最终位置。 目标文件的名称可以是硬编码的,也可以从对象的属性中获取。 但是,建议使用函数获取它的安全版本。 可以在Flask对象的配置设置中定义默认上传文件夹的路径和上传文件

  • 问题 你在Python中有一个打开的文件对象,但是需要将它传给要使用这个文件的C扩展。 解决方案 要将一个文件转换为一个整型的文件描述符,使用 PyFile_FromFd() ,如下: PyObject *fobj; /* File object (already obtained somehow) */ int fd = PyObject_AsFileDescriptor(fobj);

  • 在Microsoft Excel for Mac 2011 14.1.0版中正确打开文件时遇到问题。文件将打开,但将分隔符设置为逗号的对话框不会出现,因此所有列都用逗号连接。有没有办法让Excel识别逗号分隔符?

  • 问题内容: 这是我上传多个文件的代码: HTML代码: 密码: 但是它会上传单个文件,而不是多个文件。 问题答案: 在模板中,你需要在上传输入中添加属性: 然后在查看功能中,上传的文件可以通过列表获取。循环此列表并在每个项目上调用save()方法将它们保存在给定路径中: 此外,你可能需要使用secure_filename()来清洁文件名: 你也可以使用此方法生成随机文件名。 完整演示 视图: im

  • 问题内容: 嗨,我对Flask很陌生,我想使用ajax调用将文件上传到服务器。如文档中所述,我将文件上传添加为以下格式: 我这样写了ajax处理程序 我不知道如何从中获取上传的文件(不是名称) 并将文件保存在文件夹中。我不太确定如何从我编写的处理程序中读取文件: 如果有人可以帮助,我将不胜感激。先感谢您 问题答案: 要回答您的问题… HTML: JavaScript: 现在,在flask的终结点视

  • 问题内容: 考虑这两个python程序: : : 运行。在运行时,启动。两者都将愉快地运行,但是如果当前通过打开文件,则会输出一个空字符串。 我期望会引发异常,告诉我该文件已经打开,但是没有发生,而是文件看起来是空的。为什么会这样?检查它是否已被另一个进程打开的正确方法是什么?可以简单地检查是否返回了空字符串,然后重试直到读取其他内容,或者还有其他更Python化的方法吗? 问题答案: 有关在Py