use*_*551 9 python popen argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--pattern", help="Pattern file")
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
现在是有可能得到回字符串"--pattern"的args?我需要字符串,以便我可以构建一个cmd列表以传递给Popen Popen(['some_other_program', args.pattern.option_string, args.pattern], ...)而不重复它(并且必须在两个地方维护它)(Popen(['some_other_prog', '--pattern', args.pattern], ...)).
我需要为另一个程序创建一个包装器.一些args需要传递给包装程序(通过Popen),并且包装程序需要一些args.
有比下面的例子更好的方法吗?
pass_1 = '--to-be-passed'
parser = argparse.ArgumentParser()
parser.add_argument("-p", pass_1, help="Pass me on")
parser.add_argument("-k", "--arg-for-wrapper")
args = parser.parse_args()
...
process = Popen(['wrapped_program', pass_1, args.pass_1], ...)
...
Run Code Online (Sandbox Code Playgroud)
这种将args保存在变量中的方法并不是很好:
Popen如果在另一个函数中调用,则需要将这些变量(或它们的dict)传递给函数.这似乎是多余的,因为args传递给它应该是足够的.dest在您的通话中添加一个add_argument。
parser.add_argmument("p", "--pattern", dest="pattern", help="your help text")
args = parser.parse_args()
args = vars(args)
Run Code Online (Sandbox Code Playgroud)
您可以使用 来参考该模式args["pattern"]。