通过变量或模式匹配和变量的组合的动态 fnmatch 模式
Dynamic fnmatch pattern via variable or combination of pattern match and variable
我正在尝试找出在变量中存储动态值或变化值并将该变量用作我在 fnmatch 中进行模式搜索的一部分的最佳方法。 fnmatch 很可能不是正确的方法?
尽量保持简单。我正在从一个目录中读取文件列表,该目录的日期字符串每天都在变化。我想验证我要查找的文件是否存在,现在只打印文件名。
这有效...
#!/bin/python
import os
import datetime as dt
import fnmatch
working_dir = '/my/working/dir/'
now = dt.date.today()
f_date = (now.strftime('%Y%m%d'))
print f_date
for root,dirs,files in os.walk(working_dir):
for fname in files:
if fnmatch.fnmatch(fname, '*data*20190923*'):
print fname
exit(0)
我看到的是我想进一步评估的文件:
20190923
file-data-random_junk.20190923.txt
但是我想在模式行中做的是使用 f_date
其中 returns 字符串 20190923
而不是键入日期字符串。是否可以匹配模式字符串中文本和变量的组合,以便我可以执行类似以下操作:if fnmatch.fnmatch(fname, '*data*[my variable]*'):
?
好的,我想我可能已经回答了我自己的问题。留给子孙后代,以防对任何人有帮助。我所做的只是改变 fnmatch 行:if fnmatch.fnmatch(fname, '*data*' + f_date + '*'):
这让我得到了我想要的结果
我正在尝试找出在变量中存储动态值或变化值并将该变量用作我在 fnmatch 中进行模式搜索的一部分的最佳方法。 fnmatch 很可能不是正确的方法?
尽量保持简单。我正在从一个目录中读取文件列表,该目录的日期字符串每天都在变化。我想验证我要查找的文件是否存在,现在只打印文件名。
这有效...
#!/bin/python
import os
import datetime as dt
import fnmatch
working_dir = '/my/working/dir/'
now = dt.date.today()
f_date = (now.strftime('%Y%m%d'))
print f_date
for root,dirs,files in os.walk(working_dir):
for fname in files:
if fnmatch.fnmatch(fname, '*data*20190923*'):
print fname
exit(0)
我看到的是我想进一步评估的文件:
20190923
file-data-random_junk.20190923.txt
但是我想在模式行中做的是使用 f_date
其中 returns 字符串 20190923
而不是键入日期字符串。是否可以匹配模式字符串中文本和变量的组合,以便我可以执行类似以下操作:if fnmatch.fnmatch(fname, '*data*[my variable]*'):
?
好的,我想我可能已经回答了我自己的问题。留给子孙后代,以防对任何人有帮助。我所做的只是改变 fnmatch 行:if fnmatch.fnmatch(fname, '*data*' + f_date + '*'):
这让我得到了我想要的结果