我正在制作一个搜索脚本,用于解析档案中的日志文件,并且陷入了一个特定的事情,我没有在其他任何地方找到资源。
我需要以某种方式替换此字符串的“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部分做同样的事情。
答案 0 :(得分: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