迭代 python 中的数组并删除那些文件(如果存在)

iterate arrays in python and delete those file if it exists

我有一个如下所示的 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)

现在我想迭代 prisnd 数组并生成如下所示的文件字符串,如果存在则删除这些文件。我在文件中有 * 正则表达式。

对于 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

我只需要确保只删除 prisnd 数组中的这些文件。这可以在 python 中完成吗?

您可以使用 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)