Python:将命令行参数共享给os.system调用

时间:2013-05-29 17:33:51

标签: python wrapper argparse

我是python的新手。我搜索并尝试以下方法:

我有第三方应用程序名为“xyz”,它接受n个参数。

我想将这个“xyz”变成我的模块“abc.py”,它需要m个参数。

我想阅读并保留我的m个参数并将剩余的n个参数传递给“xyz”

注意:n参数的数量很大,所以如果我们不需要在我的模块中重新声明相同数量的参数并直接传递给“xyz”

希望它应该是可能的,我没有混淆。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

假设您的外部程序“xyz”为echo

import subprocess
import sys

m = 3 # number of args for abc.py; remainder goes to external program 'echo'
args = sys.argv
abc_args = args[1:m+1]
echo_args = args[m+1:]

cmd = ['echo']
cmd.extend(echo_args)
subprocess.call(cmd)

这导致

$ python abc.py 1 2 3 4 5 6
4 5 6

答案 1 :(得分:0)

Python将在sys.argv数组中接收命令行参数。这只是在命令行上传递的值数组。

如果你想在python中使用一些参数,只需从sys.argv中删除它们,然后将其余的传递给os.system。

import sys

args = []
for arg in sys.argv:
  if isPythonArg(arg):
    savePythonArg(arg)
  else:
    args.append(arg)

os.system("xyz" + " ".join(args))