반응형
Notice
Link
스택큐힙리스트
내 PC에서 업로드된 csv 파일을 FastAPI에서 읽을 수 없습니다. 본문
반응형
나는 다음과 같은 오류를 받습니다:csv_file_encoded = TextIOWrapper(csv_file.file, encoding='utf-8') AttributeError: 'SpooledTemporaryFile' 개체에는 'readable' 속성이 없습니다.
UploadFile
을 bytes
로 변경했습니다:
@app.post(/uploadsequence/)
async def upload_sequence(csv_file: bytes = File(...), db = Depends(get_db)):
csv_file_encoded = TextIOWrapper(csv_file, encoding='utf-8')
csv_reader = csv.DictReader(csv_file_encoded)
for row in csv_reader:
if row[Well Type] in [RIG MAINTENANCE,RIG MOVE,RIG COMMISSIONING,ABANDONMENT,LEARNINGCURVE]:
crud.insert_sequence_record(db=db, row=row,is_drilling=False)
else:
crud.insert_sequence_record(db=db, row=row,is_drilling=True)
다음과 같은 오류가 발생합니다: csv_file_encoded = TextIOWrapper(csv_file, encoding='utf-8') AttributeError: 'bytes' 개체에는 'readable' 속성이 없습니다.
인코딩을 제거했습니다:
@app.post(/uploadsequence/)
async def upload_sequence(csv_file: bytes = File(...), db = Depends(get_db)):
# csv_file_encoded = TextIOWrapper(csv_file, encoding='utf-8')
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
if row[Well Type] in [RIG MAINTENANCE,RIG MOVE,RIG COMMISSIONING,ABANDONMENT,LEARNINGCURVE]:
crud.insert_sequence_record(db=db, row=row,is_drilling=False)
else:
crud.insert_sequence_record(db=db, row=row,is_drilling=True)
다음 오류가 발생합니다:self._fieldnames = next(self.reader) _csv.Error: iterator should return strings, not int (did you open the file in text mode?)
답변 1
저는 csv 파일을 읽기 위해 다음을 사용했습니다. codecs.iterdecode
는 제게 동작했습니다.
csv_reader = csv.reader(codecs.iterdecode(csv_file.file,'utf-8'))
답변 2
FastAPI는 업로드된 CSV 파일을 읽을 수 없습니다.검색 엔진 최적화(SEO)에 대해 고려한 한국어 글을 작성해드리겠습니다.
FastAPI는 파이썬으로 개발된 웹 프레임워크로, API 개발에 강점을 가지고 있습니다. 그러나 FastAPI는 해당 업로드된 CSV 파일을 바로 읽지는 못합니다. 따라서 CSV 파일을 읽는 기능을 FastAPI에 추가하여야 합니다.
CSV 파일은 데이터를 효과적으로 저장하고 교환하기 위해 주로 사용되는 형식입니다. FastAPI는 CSV 파일에 저장된 데이터를 가져와 처리하는 기능을 호출하기 위해 파이썬의 csv 모듈을 사용할 수 있습니다.
먼저, FastAPI 프로젝트에 CSV 파일을 업로드할 수 있는 엔드포인트를 구현해야 합니다. 이 엔드포인트는 클라이언트로부터 업로드된 파일을 받아올 수 있어야 합니다. FastAPI에서는 `File` 형식을 이용하여 파일 업로드를 처리할 수 있습니다.
```python
from fastapi import FastAPI, File, UploadFile
import csv
app = FastAPI()
@app.post(/upload)
async def upload_file(file: UploadFile = File(...)):
contents = await file.read()
# CSV 파일 처리 로직 구현
# 예를 들어, 업로드된 CSV 파일을 읽고 데이터를 추출하는 등의 작업 수행
data = []
csv_data = contents.decode(utf-8).split('\n')
csv_reader = csv.reader(csv_data, delimiter=',')
for row in csv_reader:
data.append(row)
return {data: data}
```
위의 코드 예제에서는 `/upload` 엔드포인트가 CSV 파일을 받아 처리하도록 구현되어 있습니다. 업로드된 파일을 읽고, 데이터를 추출하여 `data`라는 변수에 저장한 후, 이를 응답으로 반환합니다.
이렇게 FastAPI에 업로드된 CSV 파일을 읽을 수 있는 엔드포인트를 구현하면, 해당 데이터를 활용하여 다양한 작업을 수행할 수 있습니다. 예를 들면, 데이터를 처리하여 원하는 형태로 반환하거나, 기존의 데이터베이스에 저장하는 등의 작업이 가능합니다.
물론, FastAPI를 사용하여 SEO 최적화를 위한 기능을 추가하는 것은 더욱 복잡할 수 있습니다. 하지만, CSV 파일을 업로드하고 읽는 기능은 FastAPI 기반의 웹 애플리케이션에서 매우 중요한 요소일 수 있습니다. 따라서 이러한 기능을 구현하는 것은 사용자 경험과 대규모 데이터 처리 등 다양한 측면에서 유용할 것입니다.
FastAPI에서 업로드된 CSV 파일을 읽을 수 있도록 하는 방법에 대해 설명드렸습니다. 기본 예시 코드를 활용하여 보다 세부적으로 구현하고, 필요에 따라 추가적인 기능을 개발하시면 됩니다. 이를 통해 FastAPI 기반의 웹 애플리케이션에서 SEO를 고려한 다양한 기능을 구현할 수 있을 것입니다.
반응형
Comments