2016-03-23 31 views
2

私の問題は、経験豊富なPythonプログラマー(私はそれらの1人ではない)にとって非常に簡単かもしれません。instance.cmd()経由の引数付き呼び出し関数

私は引数を持つサーバーを起動しようとしています。

現在、私はやってる:

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

server.pyに引数を渡す方法はありますか?

+0

どのような引数を使用しますか?また、 'ホスト'とは何でしょうか? –

+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]) 

あなたには、いくつかの引数(an_argument_to_serverと言う)とstartServer関数を呼び出すときには、コマンドラインでpython server.py an_argument_to_serverを実行します。 subprocessは自動的にバックグラウンドで実行されるため、&文字は必要ありません。 subprocessモジュールはpython 3.xでも動作します

+0

私は非常に確かにOPはsshライブラリを使用しています...ホストはリモートシェル+1をターゲットとするsshインスタンスですが、サブプロセスを使うつもりなら 'あなたはサブプロセスと自動的に並行して実行されるので、実際には '&'は必要ありません。 –

+0

これは良い追加です。["cmd"、 "arg1"、 "arg2"]私は答えに追加します。 – SNygard

関連する問題