1

我正在制作一个用于解析档案中的日志文件的搜索脚本,并且被困在一件我在其他任何地方都找不到资源的特定事情上。

我需要以某种方式将此字符串的“id1”替换为“任何东西”。简而言之,我希望脚本在路径中的那个特定位置接受任何内容。这是否只能通过使用 logZip 作为一个巨大的正则表达式来实现?

logZip = ("c:/logs/" + str(id1) + "/" + str(id2) + "/" + str(id1) + "_log_" + str(dateID) + "_" + str(hourID) + "-00_" + str(id2) + ".zip")

根据要求,我添加了我要定义的示例路径和文件:

c:/logs/aaa1/sss2/aaa1_log_2013-01-14-13-00_sss2.zip
c:/logs/aaa2/sss2/aaa2_log_2013-01-14-13-00_sss2.zip
c:/logs/aaa3/sss2/aaa3_log_2013-01-14-13-00_sss2.zip

下一步是用 sss2 部分做同样的事情。

4

1 回答 1

3
import glob
import os

id1 = '*'
logZip = glob.glob(os.path.join("c:/logs", id1, id2, '{}_log_{}_{}-00_{}.zip'.format(id1, dateID, hourID, id2)))

返回id1由通配符替换的文件的完整路径列表*

os.path.join使路径构建更加清晰。

如果logZip必须是单个文件,则可以使用glob.iglob,它返回一个迭代器:

id1 = '*'
mask = os.path.join("c:/logs", id1, id2, '{}_log_{}_{}-00_{}.zip'.format(id1, dateID, hourID, id2))
for logZip in glob.iglob(mask):
    # logZip is a single file
于 2013-01-14T07:54:43.020 回答