当前位置: 首页 > 知识库问答 >
问题:

采用 CSV 或 XLSX 文件输入的快速 API

赵高雅
2023-03-14

我正在尝试从用户那里获取 CSV 或 XLSX 形式的文件并将其转换为 YAML。我已经制作了python脚本来在本地将文件从CSV转换为YAML和XLSX转换为YAML,但是我无法通过从用户那里获取文件来做到这一点。如何读取上传的文件?

@app.post("/cqa/uploadFile")
def create_upload_file(file: UploadFile = File(...)):
    if file.filename.endswith('.csv') or file.filename.endswith('.xlsx'):
        toYAML(file)
        return {"filename": file.filename}
    else:
         raise HTTPException( status_code=status.HTTP_405_METHOD_NOT_ALLOWED)


 def toYAML(file):
     if file.filename.endswith('.csv'):
         convert_yaml(codecs.iterdecode(file.file,'utf-8'))
     else:
         xlsx_to_csv(file)
         convert_yaml("xlsxCSV.csv")

这是我如何将XLSX转换为CSV:

def xlsx_to_csv(file):
    data_xls = pd.read_excel(file, index_col=None)
    data_xls.to_csv("xlsxCSV.csv", encoding='utf-8', index=False)

这是我如何将CSV转换为YAML:

def convert_yaml(file):
    file=open(file)

    x = csv.reader(file)
    file_arr=[]
    for  r in x :
        file_arr.append(r)

共有2个答案

慕璞
2023-03-14

**

defcreate_upload_file(file: UploadFile=File(…)):

**

IMO,这里唯一的问题可能是查询参数中的名称“file”。表单数据输入名称中应给出相同的名称(在前端文件上传表单中)。

为了保持简单,下面正文中的输入名称应该与api中uploadfile的查询参数匹配

<body>
<form action="/files/" enctype="multipart/form-data" method="post">
<input name="file" type="file" multipart>
<input type="submit">
</form>
</body>
金宣
2023-03-14

Fastapi是一个API,所以不要指望用户能够通过一个漂亮的UI提交文件。

< code>API正确。我看不出有什么问题。

由于我不知道上传部分是什么样子的(即界面),我无法在这里提出建议,但如果您是通过javascript上传文件,那么您应该使用FormData并以路由参数中指定的方式调用文件的条目(即 >)。

你可以在这里查看我对一个类似问题的回答。在这个回复中,我只总结了答案中所写的内容。希望这就是你要找的。

如何在没有UI(即HTML)的情况下,将文件(docx、doc、pdf或json)发送到fastapi并在其上进行预测?

 类似资料:
  • 共享收货地址接口 wx.openAddress({ success: function (res) { var userName = res.userName; // 收货人姓名 var postalCode = res.postalCode; // 邮编 var provinceName = res.provinceName; // 国标收货地址第一级地址(省)

  • 本文向大家介绍使用python读取csv文件快速插入数据库的实例,包括了使用python读取csv文件快速插入数据库的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 这个脚本可以直接运行,将csv文件放在同级目录即可。 csv第一列需要有列名,如果csv里没有列名,需要在代码中添加列名。 代码运行示例:python insert.py csvname tablename 以上这篇使用py

  • 输入输出是人机交互的一种方式。最常见的输入输出是标准输入输出和文件输入输出(当然还有数据库输入输出,本节不讨论这部分)。 标准输入 标准输入也叫作控制台输入,是常见输入的一种。 例子1: use std::io; fn read_input() -> io::Result<()> { let mut input = String::new(); try!(io::stdin().r

  • 静态文件,顾名思义,就是那些不会被改变的文件,比如图片,CSS 文件和 JavaScript 源码文件。默认情况下,Flask 在程序根目录中名为 static 的子目录中寻找静态文件。因此,我们一般在应用的包中创建一个叫 static 的文件夹,并在里面放置我们的静态文件。比如,我们可以按下面的结构组织我们的 app: app/ __init__.py static/

  • 问题内容: 我有一个Java服务器应用程序,可以下载CSV文件并进行解析。解析可能需要5到45分钟,并且每小时都要进行一次。此方法是应用程序的瓶颈,因此不是过早的优化。到目前为止的代码: 是否有现有的库可以帮助我加快速度?我可以改善现有代码吗? 问题答案: 您看过Apache Commons CSV吗? 使用注意事项 请记住,仅返回数据视图,这意味着原始对象不符合垃圾回收的条件,同时引用了任何视图

  • 本文向大家介绍python3读取csv和xlsx文件的实例,包括了python3读取csv和xlsx文件的实例的使用技巧和注意事项,需要的朋友参考一下 基于win10系统,python3.6 读取csv 使用csv函数包,安装 pip install csv 使用方法: 读取xlsx 使用xlrd函数包,安装: pip install xlrd 使用方法: 这两个较为常用,需要知道如何使用。 以上