2017-01-27 22 views
0

私はPythonコードから10個のpythonスクリプトを実行しようとしており、それぞれを新しいシェルウィンドウで開きます。Pythonコードから新しいシェルウィンドウでpythonスクリプトを呼び出すにはどうすればいいですか?

マイコード:

for i in range(10): 
    name_of_file = "myscript"+str(i)+".py" 
    cmd = "python " + name_of_file 
    os.system("gnome-terminal -e 'bash -c " + cmd + "'") 

しかし、各スクリプトファイルは

は、私が思う男

+0

サブプロセスモジュールを使用することをお勧めします。それぞれをより詳細に制御できます... – fedepad

+0

@fedepadに加えて、[os.system](https://docs.python)のドキュメントを引用したいと思います。 .org/3/library/os.html#os.system): "サブプロセスモジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供します。 – Matthias

答えて

1

:これを試してみてください。このように
は、次のような何か書きます:

import subprocess 

cmd = ['gnome-terminal', '-x', 'bash', '-c'] 
for i in range(10): 
    name_of_file = "myscript"+str(i)+".py" 
    your_proc = subprocess.Popen(cmd + ['python %s' % (name_of_file)]) 
    # or if you want to use the "modern" way of formatting string you can write 
    # your_proc = subprocess.Popen(cmd + ['python {}'.format(name_of_file)]) 
    ... 

を、あなたが起動プロセスをより詳細に制御できます。
os.system()を引き続き使用する場合は、まずコマンド文字列を作成してから関数に渡します。あなたの場合は:

cmd = 'gnome-terminal -x bash -c "python {}"'.format(name_of_file) 
os.system(cmd) 

これらの行に沿って何かがあります。
@anishsaneに感謝します。

+0

反復2では 'cmd 'に' [' gnome-terminal '、' -x '、' bash '、' -c '、' python myscript0.py '、' python myscript1.py '] '...' gnome-terminal'、 '-x'、 'bash'、 '-c'、 'python myscript1.py']の代わりに、 – anishsane

+0

true、編集します! – fedepad

+0

btw、前のコードで、 'subprocess.Popen(cmd + [" python {} "。書式(name_of_file)])' – anishsane

1

ありがとう...私は新しいターミナルでのpythonの唯一のライブ通訳を取得し、実行していませんそれはos.systemへの引数の文字列引用と関係があるということです。私はsubprocessモジュール(https://docs.python.org/2/library/subprocess.html)を使用してお勧めし

os.system("""gnome-terminal -e 'bash -c "{}"'""".format(cmd)) 
関連する問題