Python:动态运行外部程序

时间:2013-01-18 18:12:10

标签: python command-line

  

可能重复:
  Calling an external command in Python

我想从我的Python脚本调用各种程序,比如二进制程序,还有其他perl / python / ruby​​脚本,如wget,sqlmap和自定义脚本。

问题在于我希望用户能够更改底层程序的参数。我们以wget为例。假设我正在调用此程序(请注意,所有三个参数都动态输入到命令中):

wget www.google.com --user=user --password=pass

但我也希望用户在wget命令中添加自定义参数。我想最好的方法是直接从一个文件,但我想知道是否存在这样的东西,所以我不会手工重新编程。

另外请记住,这不仅仅是一个程序,但最多可能有100个程序,可能更多。它需要是可扩展的,并且不会太复杂,用户无法更改。

由于

1 个答案:

答案 0 :(得分:0)

使用subprocess.check_output

的一个简单示例
program = 'wget'
default_args = ['www.google.com']
user_args = []
subprocess.check_output(program + default_args + user_args)

请小心谨慎,在允许任何用户向命令添加参数之前进行所有安全检查。

在将用户提供的参数添加到子进程调用

之前,您可能还需要shlex.split来拆分它们

如果你想在外部文件中使用默认值,你可以这样做:

with open('wget_defaults.txt') as i:
    default_args = i.read().split(',')

希望有所帮助