如何在python 2.7中区分两种不同类型的文件?

时间:2014-02-14 06:21:44

标签: python python-2.7 file-io

我有一个工具,我以两种格式保存文件(一个是JSON,另一个是文本(没有扩展名)),并有2个按钮用于打开它们。

在升级版工具中,我删除了文本格式的保存。现在我不想要2个按钮来加载2个不同的文件,我希望这两个文件都加载相同的按钮。

如何做到这一点,因为一个文件有“.json”扩展名,而其他文件没有任何扩展名。

我知道的一种方法是检查文件扩展名(这是标准方式吗?)

还有其他方法吗?

这样做的pythonic方式是什么?

3 个答案:

答案 0 :(得分:2)

是的,您可以查看扩展程序。使用endswith

if filename.endswith('.json'):
    # it's json
else:
    # it's not 

或者您可以检查文件内容。

s = open(filename).read()
try:
    json.loads(s)
    # it's json
except ValueError:
    # it's not

答案 1 :(得分:2)

您可以采取两种方法:


使用os.splitext确定扩展程序是否为'json'

if os.splitext(path)[1] == 'json':
    ...

尝试解析为json,如果失败则解析另一种方式:

try:
    data = json.loads(contents)
except ValueError:
    data = parse_text()  # your custom function i guess?

答案 2 :(得分:1)

import os
if os.path.splitext('file.json')[1] == '.json':
    #it's a json file
else:
    #it's not a json