2013-01-18 88 views
0

可能重複:
Calling an external command in Python的Python:運行外部程序動態

我想從我的Python腳本中調用各種程序,如二進制程序,還包括其他的Perl/Python的/ ruby腳本,如wget,sqlmap和自定義腳本。

問題是我希望用戶能夠更改底層程序的參數。以wget爲例。比方說,我在調用這個程序(注意,所有三個參數動態地輸入到命令):

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

但我也想用戶添加自定義參數,wget命令。我想最好的方法是直接從一個文件,但我想知道是否存在這樣的事情,以便我不會手動重新編程一切。

另外請記住,這不僅僅是一個程序,但它可能高達100個程序,也許更多。它需要是可擴展的,而不是太複雜,用戶無法更改。使用subprocess.check_output

program = 'wget' 
default_args = ['www.google.com'] 
user_args = [] 
subprocess.check_output(program + default_args + user_args) 

只是要非常注意使用這個

感謝

+3

看看['subprocess'](http://docs.python.org/2/library/subprocess.html)模塊。 –

回答

0

一個簡單的例子,允許任何用戶參數添加到命令之前完成所有的安全檢查。

您可能還需要shlex.split將其添加到子過程調用

如果你想在外部文件的默認值,你可以做這樣的事情之前,給用戶提供的參數分爲:

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

希望它有幫助

+0

嗨,我不是問怎麼做,顯然我知道該怎麼做,這很簡單。我在問怎麼做,所以我可以很容易地擴展它。我想在各種程序中使用.txt中的參數:這樣做並不困難;我只是問是否存在這樣的事情,所以我可以使用它。請更正您的答案。 – eleanor