【发布时间】:2015-07-24 08:15:13
【问题描述】:
我认为标题说明了一切。我需要检查名称中包含单词data 的文件是否存在。我尝试了类似 os.path.exists(/d/prog/*data.txt) 的方法,但它不起作用。
【问题讨论】:
标签: python filenames partial exists
我认为标题说明了一切。我需要检查名称中包含单词data 的文件是否存在。我尝试了类似 os.path.exists(/d/prog/*data.txt) 的方法,但它不起作用。
【问题讨论】:
标签: python filenames partial exists
你不能只用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']
【讨论】:
如果您使用的是 Windows:
>>> import glob
>>> glob.glob('D:\\test\\*data*')
['D:\\test\\data.1028.txt', 'D:\\test\\data2.1041.txt']
【讨论】:
试试glob吧:
from glob import glob
if glob('/d/prog/*data.txt'):
# blah blah
【讨论】: