web-dev-qa-db-ja.com

別のコンソールのsubprocess.Popen

これが重複していないことを願っています。

subprocess.Popen()を使用して、別のコンソールでスクリプトを開こうとしています。 Shell=Trueパラメーターを設定しようとしましたが、うまくいきませんでした。

32ビットPython 2.7を64ビットWindows 7で使用しています。

20
Ionut Hulub
_from subprocess import *

c = 'dir' #Windows

handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, Shell=True)
print handle.stdout.read()
handle.flush()
_

_Shell=True_を使用しない場合、Popen()にコマンド文字列ではなくリストを指定する必要があります。例:

_c = ['ls', '-l'] #Linux
_

シェルなしで開きます。

_handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
_

これは、Pythonからサブプロセスを呼び出すことができる最も手動で柔軟な方法です。出力だけが必要な場合は、次を実行します。

_from subproccess import check_output
print check_output('dir')
_

新しいコンソールGUIウィンドウを開いてXを実行するには:

_import os
os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)
_
7
Torxed

別のコンソールで開くには、次のようにします(Win7でテスト済み/ Python 3):

from subprocess import Popen, CREATE_NEW_CONSOLE

Popen('cmd', creationflags=CREATE_NEW_CONSOLE)

input('Enter to exit from Python script...')

関連する

実行する新しいシェルを生成する方法python baseからのスクリプトpython script?

23
Pedro Vagner

Win7/python 2.7でcreationflags = CREATE_NEW_CONSOLEを試しましたが、これも機能しました。

4
David Wallace