我有一个Python脚本,如下所示,它读取了四个文件,并为每个clientId
提供了这些文件之间的区别,它运行正常:
#!/usr/bin/python
import os, sys, re, json
with open(sys.argv[1]) as old_primary, open(sys.argv[2]) as new_primary, \
open(sys.argv[3]) as old_second, open(sys.argv[4]) as new_second:
prepare_json = lambda f: json.loads(re.sub(r'([0-9]+)=', '"\\1":', f.read()))
old_pr_data = prepare_json(old_primary)
new_pr_data = prepare_json(new_primary)
old_snd_data = prepare_json(old_second)
new_snd_data = prepare_json(new_second)
k = sys.argv[5]
print('ClientId ' + k)
print('pri=({})'.format(' '.join(map(str, set(old_pr_data[k]) ^ set(new_pr_data[k])))))
print('snd=({})\n'.format(' '.join(map(str, set(old_snd_data[k]) ^ set(new_snd_data[k])))))
以下是我如何运行它:
python test.py old_primary_mapping.txt new_primary_mapping.txt old_secondary_mapping.txt new_secondary_mapping.txt 1
问题陈述
这是我在运行以上脚本后获得clientId 1
的输出:
ClientId 1
pri=(192 196 176)
snd=(1482 1485 1491 1494)
现在我想迭代pri
和snd
数组,并创建一个如下所示的文件字符串,并删除这些文件(如果存在)。我在文件中有*
个正则表达式。
对于pri,请删除这些文件:
/primary/proc_192_for_*.log
/primary/proc_196_for_*.log
/primary/proc_176_for_*.log
对于snd,请删除这些文件:
/secondary/proc_1482_for_*.log
/secondary/proc_1485_for_*.log
/secondary/proc_1491_for_*.log
/secondary/proc_1494_for_*.log
我只需要确保我只删除这些文件pri
和snd
数组中的文件。这可以在python中做吗?
答案 0 :(得分:2)
您可以使用glob
类似(未经测试)删除这些文件:
for dir_name, numbers in (('primary', pri), ('secondary', snd)):
for number in numbers:
for filename in glob.glob('/{}/proc_{}_for_*.log'.format(dir_name, number)):
os.unlink(filename)