如何使用Python检查basename(只是名称的一部分)文件存在?

时间:2015-05-13 07:14:57

标签: python filenames partial exists

我认为标题解释了这一切。我需要检查其名称中包含单词data的文件是否存在。我试过类似os.path.exists(/d/prog/*data.txt)的东西,但这不起作用。

3 个答案:

答案 0 :(得分:1)

您无法使用os.path.exists执行此操作 - 它需要完整的路径名。如果不知道确切的文件名,你应该首先在文件系统上找到这个文件(当你这样做时,它证明文件存在)。

一个选项是列出目录(-ies),并手动查找文件:

>>> import os
>>> file_list = os.listdir('/etc')
>>> [fn for fn in file_list if 'deny' in fn]
['hostapd.deny', 'at.deny', 'cron.deny', 'hosts.deny']

另一个更灵活的选择是使用glob.glob,允许使用*?[...]等通配符:

>>> import glob
>>> glob.glob('/etc/*deny*')
['/etc/hostapd.deny', '/etc/at.deny', '/etc/cron.deny', '/etc/hosts.deny']

答案 1 :(得分:1)

请尝试glob

from glob import glob
if glob('/d/prog/*data.txt'):
    # blah blah 

答案 2 :(得分:1)

如果你在Windows上:

>>> import glob
>>> glob.glob('D:\\test\\*data*')
['D:\\test\\data.1028.txt', 'D:\\test\\data2.1041.txt']