如何使用 .csv 文件编写 FAST API 函数并在 pandas 中进行一些预处理
How to write a FAST API function taking .csv file and making some preprocessing in pandas
我正在尝试创建一个 API 函数,它接收 .csv 文件(已上传)并将其作为 pandas DataFrame 打开。像那样:
from fastapi import FastAPI
from fastapi import UploadFile, Query, Form
import pandas as pd
app = FastAPI()
@app.post("/check")
def foo(file: UploadFile):
df = pd.read_csv(file.file)
return len(df)
然后,我正在调用我的 API:
import requests
url = 'http://127.0.0.1:8000/check'
file = {'file': open('data/ny_pollution_events.csv', 'rb')}
resp = requests.post(url=url, files=file)
print(resp.json())
但是我得到这样的错误:FileNotFoundError: [Errno 2] No such file or directory: 'ny_pollution_events.csv'
据我所知 doc pandas 能够从类文件对象中读取 .csv 文件,file.file
应该是这样。但似乎在 read_csv() 方法 pandas 中获取名称(不是文件对象本身)并尝试在本地找到它。
我是不是做错了什么?
我能以某种方式实现这个逻辑吗?
要读取 pandas 中的文件,该文件必须存储在您的 PC 上。不要忘记导入 shutil
。如果您不需要将文件存储在您的 PC 上,请使用 os.remove(filepath)
.
将其删除
if not file.filename.lower().endswith(('.csv',".xlsx",".xls")):
return 404,"Please upload xlsx,csv or xls file."
if file.filename.lower().endswith(".csv"):
extension = ".csv"
elif file.filename.lower().endswith(".xlsx"):
extension = ".xlsx"
elif file.filename.lower().endswith(".xls"):
extension = ".xls"
# eventid = datetime.datetime.now().strftime('%Y%m-%d%H-%M%S-') + str(uuid4())
filepath = "location where you want to store file"+ extension
with open(filepath, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
try:
if filepath.endswith(".csv"):
df = pd.read_csv(filepath)
else:
df = pd.read_excel(filepath)
except:
return 401, "File is not proper"
我正在尝试创建一个 API 函数,它接收 .csv 文件(已上传)并将其作为 pandas DataFrame 打开。像那样:
from fastapi import FastAPI
from fastapi import UploadFile, Query, Form
import pandas as pd
app = FastAPI()
@app.post("/check")
def foo(file: UploadFile):
df = pd.read_csv(file.file)
return len(df)
然后,我正在调用我的 API:
import requests
url = 'http://127.0.0.1:8000/check'
file = {'file': open('data/ny_pollution_events.csv', 'rb')}
resp = requests.post(url=url, files=file)
print(resp.json())
但是我得到这样的错误:FileNotFoundError: [Errno 2] No such file or directory: 'ny_pollution_events.csv'
据我所知 doc pandas 能够从类文件对象中读取 .csv 文件,file.file
应该是这样。但似乎在 read_csv() 方法 pandas 中获取名称(不是文件对象本身)并尝试在本地找到它。
我是不是做错了什么? 我能以某种方式实现这个逻辑吗?
要读取 pandas 中的文件,该文件必须存储在您的 PC 上。不要忘记导入 shutil
。如果您不需要将文件存储在您的 PC 上,请使用 os.remove(filepath)
.
if not file.filename.lower().endswith(('.csv',".xlsx",".xls")):
return 404,"Please upload xlsx,csv or xls file."
if file.filename.lower().endswith(".csv"):
extension = ".csv"
elif file.filename.lower().endswith(".xlsx"):
extension = ".xlsx"
elif file.filename.lower().endswith(".xls"):
extension = ".xls"
# eventid = datetime.datetime.now().strftime('%Y%m-%d%H-%M%S-') + str(uuid4())
filepath = "location where you want to store file"+ extension
with open(filepath, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
try:
if filepath.endswith(".csv"):
df = pd.read_csv(filepath)
else:
df = pd.read_excel(filepath)
except:
return 401, "File is not proper"