我还没有找到一个这样的用例,但基本上我试图利用glob作为文件名的一部分。
file_name_date = time.strftime("%m%d%y")
h_server = time.strftime("%-I%p")
filename = 'PRD.FRB.D01.INTRADAY.GGV1051.' + file_name_date + '.' + h_server + '.txt'
这在我的代码中工作正常,但是现在GGV1051正随着每个文件而改变,所以我希望做类似的事情
filename = glob('PRD.FRB.D01.INTRADAY.' + * + '.' + file_name_date + '.' + h_server + '.txt'
但我不确定如何继续。我没有看到fnmatch或glob的明确路径,但我并不精通这些库。
我的想法是创建一个这样的字符串:
filename = str('PRD.FRB.D01.INTRADAY.?.' + file_name_date + '.' + h_server + '.txt')
会产生:
PRD.FRB.D01.INTRADAY.?.062917.12P.txt
然后执行类似
的操作glob(filename):
但这并不像预期的那样奏效。
有什么想法?谢谢!
答案 0 :(得分:1)
这应该有效,星号符号*
也应该是一个字符串。
import glob
all_files = []
for file in glob.glob('PRD.FRB.D01.INTRADAY.*.' + file_name_date + '.' + h_server + '.txt''):
all_files.append(file)
答案 1 :(得分:1)
使用glob
为/home/juser/something/*.txt
中的所有文本文件匹配/home/juser directory
等路径名。您可以使用它来匹配当前工作目录中所有文本文件的简单文件名,如*.txt
。
fnmatch.fnmatch
和fnmatch.filter
用于filenmaes。前者测试文件名是否与模式匹配,并返回匹配名称的True
,否则False
表示不匹配的名称。后者根据给定的glob模式返回匹配的文件名。
所有文件名均以PRD.FRB.D01.INTRADAY开头。并以.txt后缀结束,然后匹配以PRD.FRB.D01.INTRADAY开头的所有文件。并以.txt结尾,不管中间是什么:
glob.glob("PRD.FRB.D01.INTRADAY.*.txt")
此glob匹配以PRD.FRB.D01.INTRADAY开头的任何文件名。并以.txt后缀结尾,PRD.FRB.D01.INTRADAY之后的内容并不重要。 *
通配符匹配任意字符。 ?
只匹配一个任意字符。注意,这与脚本的工作目录中的文件名匹配。如果您需要匹配其他目录中的名称,请将"/path/to/my/PRD.FRB.D01.INTRADAY.*.txt"
传递给glob
。