1.1 os.system(command)
サブシェルで command コマンドを実行し、command コマンドの実行後に終了ステータスを返します。これは実際には C 標準ライブラリ関数 system() を使用して実装されます。本機能はコマンド実行時にターミナルを再度開く必要があり、コマンドコマンドの実行結果を保存することはできません。
1.2 os.popen(コマンド,モード)
コマンドプロセスへのパイプを開きます。この関数の戻り値は、読み取りまたは書き込みが可能なファイル オブジェクトです (モードによって決定され、デフォルトのモードは「r」です)。 mode が 'r' の場合、この関数の戻り値を使用して read() を呼び出し、コマンド command の実行結果を取得できます。
1.3 コマンド.getstatusoutput(コマンド)
os.getstatusoutput() 関数を使用してコマンド command を実行し、コマンド コマンド実行の戻りステータスと実行結果をそれぞれ表すタプル (ステータス、出力) を返します。コマンドの実行は実際には {command;} 2>&1 の後に行われるため、出力にはコンソール出力情報またはエラー情報が含まれます。出力には末尾の改行は含まれません。
2.1 subprocess.call(["some_command","some_argument","another_argument_or_path"])
subprocess.call(command,shell=True)
2.2 サブプロセス.Popen(command,shell=True)
コマンドが実行ファイルでない場合、shell=Trueは省略できません。
subprocess モジュールを使用すると、新しいプロセスを作成し、それを新しいプロセスの入力/出力/エラー パイプラインに接続し、新しいプロセスの実行の戻りステータスを取得できます。 subprocess モジュールを使用する目的は、os.system()、os.popen*()、commands.* などの古い関数またはモジュールを置き換えることです。
最も簡単な方法は、クラス subprocess.Popen(command,shell=True) を使用することです。 Popen クラスには、子プロセスとの通信を実現できる Popen.stdin、Popen.stdout、および Popen.stderr という 3 つの便利なプロパティがあります。
シェルを呼び出した結果を Python 変数
に代入します
Python/wxPython 環境では、通常、外部コマンドを実行したり、Python プログラムで別のプログラムを開始したりする方法がいくつかあります。
1.os.システム(コマンド)
2. wx.Execute(コマンド、syn=wx.EXEC_ASYNC、コールバック=なし)
syn が wx.EXEC_ASYNC に設定されている場合、wx.Excute 関数は syn=wx.EXEC_SYNC の場合、呼び出し元のプログラムが終了するのを待ってから戻ります。
callback は wx.Process 変数です。callback が None ではなく、syn=wx.EXEC_ASYNC の場合、プログラムの終了後に wx.Process.OnTerminate() 関数が呼び出されます。
os.system() と wx.Execute() は両方ともシステムのシェルを使用し、実行中にシェル ウィンドウが表示されます。たとえば、Windows ではコンソール ウィンドウが表示されますが、これは美しくありません。次の 2 つの方法にはこの欠点はありません。
3. クラスのサブプロセス.Popen
最も簡単な使用法は次のとおりです:
subprocess.Popen(command,shell=True)
コマンドが実行ファイルでない場合、shell=Trueは省略できません。
最初の 3 つのメソッドは、プログラムを実行してファイルを開くためにのみ使用できます。URL アドレスを開くには、WebBrowser モジュールが提供する関数を使用できます。
4. webbrowser.open(url)
システムのデフォルトのブラウザを呼び出して、webbrowser.open('http://www.jb51.net') や
webbrowser.open('h:python.zip') などの URL アドレスを開きます。プログラム。これにより、ファイル名であるか URL であるかを区別する必要がなくなります。Linux で実現できるかどうかはわかりません。
上記は Windows2000、Python2.4a1、wxPython 2.5.1 で動作します。
変更: 別の方法があります: subprocess.call(*args, **kwargs)