0

可能重复:
在 Python 中调用外部命令

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

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

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

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

还要记住,这不仅仅是 1 个程序,它可能多达 100 个程序,甚至更多。它需要是可扩展的,并且用户更改起来不太复杂。

谢谢

4

1 回答 1

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(',')

希望能帮助到你

于 2013-01-18T18:20:43.330 回答