我正在编写一个脚本来调用一个包含所有可能的命令行参数的程序。其中一些论点可能不存在。尝试#1:
args1 = ['program.exe']
args2 = ['1', '5', '']
args3 = ['--foo', '']
for args in itertools.product(args1, args2, args3):
args = [arg for arg in args if arg != '']
subprocess.call(list(args))
有没有其他方法可以获得这些排列而无需手动过滤掉空字符串?如果我把它留在参数列表中,事情会中断。我的意思是,我的方法有效,但我觉得会有更多的内置方法来处理这个问题。虽然阅读this question让我觉得不太可能。
答案 0 :(得分:1)
如果你希望它看起来更清洁,你可以使用内置的filter()函数。
args = filter(lambda x: not x, args)
或者如果你不喜欢lambda
args = filter(not_empty, args)
----
def not_empty(x):
return not x
我不知道只使用itertools
函数执行此操作的方法。