确定文件“更有可能”是 json 还是 csv

5 python mime python-3.x

我有一些带有通用扩展名的文件,例如“txt”或根本没有扩展名。我试图以非常快速的方式确定文件是 json 还是 csv。我想过使用该magic模块,但它不适用于我正在尝试做的事情。例如:

>>> import magic
>>> magic.from_file('my_json_file.txt')
'ASCII text, with very long lines, with no line terminators'
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来确定某些东西是 json 还是 csv?我无法加载整个文件,我想以非常快速的方式确定它。这里有什么好的解决方案?

blh*_*ing 5

您可以检查文件是否以{或开头,[以确定它是否为 JSON,并且您可以加载前两行csv.reader并查看两行是否具有相同的列数,以确定它是否为 CSV。

import csv
with open('file') as f:
    if f.read(1) in '{[':
        print('likely JSON')
    else:
        f.seek(0)
        reader = csv.reader(f)
        try:
            if len(next(reader)) == len(next(reader)) > 1:
                print('likely CSV')
        except StopIteration:
            pass
Run Code Online (Sandbox Code Playgroud)

  • 简单的方法,我喜欢这个。感谢您提供此解决方案。 (2认同)