Python检查上传的CSV是否有标题而不保存?

2024-04-19 23:37:26 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以检查通过POST请求上传的csv是否有头,而无需实际保存csv

此外,如果任何人对我上传csv文件的方式有任何建议,他们可以自由提出建议

def post(self, request, *args, **kwargs):
    uploaded_file = request.FILES['file']
    uploaded_file_name = uploaded_file.name

    if len(uploaded_file) != 0:
        try:
            df = pd.read_csv(uploaded_file)
            id = str(uuid.uuid4())
            df.to_csv(f'{TRAIN_FILES}/{id}.csv', index=False)
        except Exception as e:
            return JsonResponse({'msg': str(e)}, status=500)

        return JsonResponse({'msg': id}, status=200)
    else:
        return JsonResponse({'msg': 'File is empty'}, status=500)

所以我用熊猫阅读它的原因是因为我用熊猫阅读它,然后把它投射到一张桌子上。我使用pandas不仅仅是为了验证它是一个有效的CSV

因此,除了确保上传的_文件具有标题外,还需要:

  • 确保它不是空的csv
  • 确保它是csv
  • 确保它是可读的

如果它不满足上述任何要求,它应该返回一个带有错误消息的响应

检查所有这些的好方法是什么?我查看了csv.sniffer,但我认为您实际上需要保存csv才能使用它


Tags: 文件csv方法nameiddfreturnrequest
1条回答
网友
1楼 · 发布于 2024-04-19 23:37:26

CSV文件的问题是,我认为您无法判断文件是否有标题行,除非您对内容有所了解。如果知道第一列的名称,可以查看该名称是否在第0行中。如果您知道第二列应该是整数,那么您可以看到第0行第1列的值是string还是int

name,age,color
julian,3,red
raja,2,purple
zendai,4,green

标题行实际上没有什么特别之处,只是在第2列中,它有一个字符串“age”,而不是一个整数

相关问题 更多 >