2016-03-23 49 views
2

我的問題對於一些有經驗的Python程序員來說可能非常容易(我不是其中之一)。通過instance.cmd調用帶參數的函數()

我想用參數啓動服務器。

目前我做:

def startServer(host): 
    host.cmd('python server.py &') 

有沒有辦法將參數傳遞到server.py

+0

你想使用哪些參數?另外,'host'將會是什麼? –

+0

什麼是'主機'? –

+0

主機是「Mininet」中的一個節點,它是一個虛擬網絡......也許cmd是該類的一個參數。我認爲它可能會在python – Michael

回答

1
def startServer(host): 
    host.cmd('python server.py an_argument_to_server &') 

這真的是你在找什麼?

+0

東西我需要嘗試它是否適用於我,但它看起來完全像我在找什麼。正如我所說......對於瞭解python – Michael

+0

的人來說,這可能非常容易!非常感謝 – Michael

1

爲了從命令行運行python run server.py,我們可以使用subprocess模塊。文檔可以在這裏找到:https://docs.python.org/2/library/subprocess.html

import subprocess 

def startServer(host, argument): 
    subprocess.call(['python', 'server.py', argument]) 

當調用startServer功能與一些參數(比如an_argument_to_server),它會在命令行中運行python server.py an_argument_to_server。我們不需要&字符,因爲subprocess會自動在後臺運行。 subprocess模塊也適用於python 3.x

+0

我很確定OP使用的是ssh庫......其中host是一個ssh實例,它的目標是一個遠程shell +1,但是如果你要使用子進程,你應該像' [「cmd」,「arg1」,「arg2」]'你真的不需要'&',因爲它可以自動並行運行,子進程 –

+0

這些都是很好的補充。我會添加到答案。 – SNygard