在Python中检查GZIP文件是否存在
我想在我的Linux电脑上用Python检查一个.gz文件是否存在。如果我检查一个文本文件,下面的代码可以正常工作:
import os.path
os.path.isfile('bob.asc')
但是,如果bob.asc是gzip格式的(也就是bob.asc.gz),Python就无法识别它。理想情况下,我希望能用os.path.isfile或者其他简单的方法来检查(不想写新的函数)。有没有办法让Python能识别这个文件,或者通过修改我的系统设置来实现?
不幸的是,我不能改变数据格式或文件名,因为这些文件是公司批量提供给我的。
3 个回答
0
你需要对每个文件进行测试。比如说:
if any(map(os.path.isfile, ['bob.asc', 'bob.asc.gz'])):
print 'yay'
1
当然不行;它们是完全不同的文件。你需要单独测试它:
os.path.isfile('bob.asc.gz')
如果那个确切的文件在当前工作目录中存在,这个会返回 True
。
不过可以有一个变通的方法:
from os import listdir, getcwd
from os.path import splitext, basename
any(splitext(basename(f))[0] == 'bob.asc' for f in listdir(getcwd()))
1
经过一番折腾,我找到的最简洁的方法是
subprocess.call(['ls','bob.asc.gz']) == 0
这个方法会返回True,如果文件在目录中存在。这是我对
os.path.isfile('bob.asc.gz')
的预期行为,但不知为什么,Python在用os.path.isfile检查文件时,不会把扩展名为.gz的文件当作文件来处理。
我觉得我的解决方案不是特别优雅,但确实很简洁。如果有人有更优雅的解决方案,我很想看看。谢谢。