【问题标题】:Dynamic fnmatch pattern via variable or combination of pattern match and variable通过变量或模式匹配和变量组合的动态 fnmatch 模式
【发布时间】:2020-01-23 14:26:39
【问题描述】:

我正在尝试找出在变量中存储动态或变化值的最佳方法,并将该变量用作我在 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,它返回字符串20190923,而不是输入日期字符串。是否可以匹配模式字符串中的文本和变量的组合,以便我可以执行以下操作:if fnmatch.fnmatch(fname, '*data*[my variable]*'):

【问题讨论】:

    标签: python fnmatch


    【解决方案1】:

    好的,我想我可能已经回答了我自己的问题。留给后代,以防它帮助任何人。我所做的只是改变 fnmatch 行:if fnmatch.fnmatch(fname, '*data*' + f_date + '*'): 这让我得到了我想要的结果

    【讨论】:

      猜你喜欢
      • 2019-04-25
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      相关资源
      最近更新 更多