如何检查文件是否为csv?

How to check if a file is csv or not?

我有一个 Django 视图函数,可以将 csv 转换为另一种分隔符格式。但是,我只想转换 csv 文件并拒绝其他文件。

def index(request):
    csv_form = ''
    if request.method == 'POST':
        csv_form = CsvForm(request.POST, request.FILES)
        if csv_form.is_valid():
            csv_file = TextIOWrapper(request.FILES['csv_file'].file, encoding='ascii', errors='replace')
            #other actions

我不能使用下面的代码,因为它只适用于二进制文件,但 csv 模块需要文本模式文件。仅处理 csv 文件的任何替代方法。

if not csv_file.name.endswith('.csv'):
    messages.error(request, 'THIS IS NOT A CSV FILE')

您可以检查是否有逗号,以及它们之间是否有单词。

取决于这需要多安全。最简单的步骤就是在上传 HTML 字段中限制扩展类型。

<input type="file" accept=".csv" />

显然,任何人都可以将扩展名命名为 .csv 以进行环绕导航,但任何仅检查扩展名的解决方案都会出现这种情况。