Назад к вопросам
Бюро 1440
Middle
2
Как провалидировать входящий CSV/Parquet файл в FastAPI (наличие нужных столбцов, диапазоны значений)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В FastAPI для валидации входящего CSV или Parquet файла можно:
- Получить файл через
UploadFile. - Считать содержимое в память (например, с помощью pandas).
- Проверить наличие нужных столбцов.
- Проверить диапазоны значений в столбцах.
Пример для CSV:
from fastapi import FastAPI, File, UploadFile, HTTPException
import pandas as pd
app = FastAPI()
REQUIRED_COLUMNS = {'id', 'value', 'date'}
@app.post("/upload-csv/")
async def upload_csv(file: UploadFile = File(...)):
if not file.filename.endswith('.csv'):
raise HTTPException(status_code=400, detail="Only CSV files are accepted")
content = await file.read()
try:
df = pd.read_csv(pd.compat.StringIO(content.decode('utf-8')))
except Exception as e:
raise HTTPException(status_code=400, detail=f"Invalid CSV file: {e}")
missing_cols = REQUIRED_COLUMNS - set(df.columns)
if missing_cols:
raise HTTPException(status_code=400, detail=f"Missing columns: {missing_cols}")
if not df['value'].between(0, 100).all():
raise HTTPException(status_code=400, detail="Column 'value' must be between 0 and 100")
# Дополнительные проверки...
return {"message": "File is valid"}
Для Parquet можно использовать pd.read_parquet() вместо pd.read_csv(). Главное — обработать исключения и проверить структуру данных.