我想在运行Python时检查我的linux机器上是否存在.gz文件。如果我为文本文件执行此操作,则以下代码有效:
import os.path
os.path.isfile('bob.asc')
但是,如果bob.asc采用gzip格式(bob.asc.gz),则Python无法识别它。理想情况下,我想使用os.path.isfile或非常简洁的东西(不编写新函数)。是否可以通过Python或通过更改系统配置中的内容来识别文件?
不幸的是,我无法更改数据格式或文件名,因为它们是由公司批量提供给我的。
答案 0 :(得分: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 :(得分:0)
您需要测试每个文件。例如:
if any(map(os.path.isfile, ['bob.asc', 'bob.asc.gz'])):
print 'yay'
答案 2 :(得分:0)
经过一段时间的愚弄,我能完成工作的最简洁方法是
subprocess.call(['ls','bob.asc.gz']) == 0
如果文件存在于目录中,则返回True。这是我期望的行为
os.path.isfile('bob.asc.gz')
但由于某些原因,当传递给os.path.isfile时,Python不会接受扩展名为.gz的文件作为文件。
我觉得我的解决方案非常优雅,但它很简洁。如果有人有更优雅的解决方案,我很乐意看到它。感谢。