You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework上传CSV解析报错及数据读取咨询

解决Django REST Framework上传CSV文件读取错误

你遇到的TypeError是因为request.FILES.get('file_uploaded')返回的是InMemoryUploadedFile对象,它本身就是类文件流对象,不需要再用open()函数打开——open()需要的是文件路径字符串,而不是已经在内存中的文件对象。

下面提供两种常用的处理方式,把上传的CSV转为字典或DataFrame:


方式一:用Python内置csv模块读取为字典列表

直接将file_uploaded传入csv.DictReader,就能把CSV内容转为字典格式(表头为键,每行数据为对应值):

修改后的views.py代码:

import csv
from rest_framework import viewsets
from rest_framework.response import Response
from .serializers import UploadSerializer

class UploadViewSet(viewsets.ViewSet):
    serializer_class = UploadSerializer

    def create(self, request):
        file_uploaded = request.FILES.get('file_uploaded')
        # 直接使用InMemoryUploadedFile对象,无需open()
        csv_reader = csv.DictReader(file_uploaded)
        # 将读取结果转为字典列表
        csv_data = list(csv_reader)
        
        # 示例:打印每一行字典数据
        for row in csv_data:
            print(row)
        
        # 后续可根据业务需求处理csv_data
        return Response({"status": "success", "data": csv_data})

方式二:用Pandas读取为DataFrame

如果需要做复杂的数据清洗或分析,推荐用Pandas直接读取为DataFrame:

首先确保安装Pandas:

pip install pandas

修改后的views.py代码:

import pandas as pd
from rest_framework import viewsets
from rest_framework.response import Response
from .serializers import UploadSerializer

class UploadViewSet(viewsets.ViewSet):
    serializer_class = UploadSerializer

    def create(self, request):
        file_uploaded = request.FILES.get('file_uploaded')
        # 直接将文件对象传入pd.read_csv,可根据CSV编码调整encoding参数
        df = pd.read_csv(file_uploaded, encoding='utf-8')
        
        # 示例:打印DataFrame前5行数据
        print(df.head())
        
        # 如需转为字典列表,使用to_dict()方法
        df_dict = df.to_dict('records')
        
        return Response({"status": "success", "data": df_dict})

额外注意

  • 如果上传的CSV文件过大(超过Django默认内存阈值),会自动转为TemporaryUploadedFile(存到系统临时文件),但处理方式和InMemoryUploadedFile完全一致,无需额外修改代码。
  • 若CSV出现乱码,可尝试调整encoding参数(比如gbk、utf-8-sig)。

内容的提问来源于stack exchange,提问作者Marin Leontenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:46:01