【发布时间】:2019-07-08 22:27:51
【问题描述】:
我有一些具有通用扩展名的文件,例如“txt”或根本没有扩展名。我试图以非常快速的方式确定文件是 json 还是 csv。我想过使用 magic 模块,但它不适用于我想要做的事情。例如:
>>> import magic
>>> magic.from_file('my_json_file.txt')
'ASCII text, with very long lines, with no line terminators'
有没有更好的方法来确定是 json 还是 csv?我无法加载整个文件,我想以非常快速的方式确定它。这里有什么好的解决方案?
【问题讨论】:
-
即使有办法根据文件的内容找出文件的类型,但如果文件内的JSON无效或分隔符在 csv 数据和其他此类问题中不一致。此外,txt 文件中的所有内容都被视为
string类型,无论是否为 JSON。 -
@amanb 如果它无效也没关系。我只是想看看——基于文件中的前 1000 个字符是“可能是 json 或可能是 csv”。现在做类似
s.startswith('{')的事情比magic给了我更好的结果,所以必须有一些更准确的东西...... -
嗯,您无法加载整个文件,但 magic.from_file 可以说没有行终止符。显然它可以加载整个文件。
-
@RemcoGerlich 我刚刚将一些数据复制粘贴到该文件中以进行测试。这些文件可能非常大(10GB),我只下载前 1KB 左右,以查看它可能是哪种文件类型,没有明确的扩展名。
标签: python python-3.x mime