のクロスプラットフォームの実行とトラブル私はOSX上でのみWindows上でいくつかのコマンドと完全にコマンドを実行し、次のヘルパーメソッドがあります。たとえばPythonの:サブプロセス
def exec_cmd(cmd):
"""Run a command and return the status, standard output and error."""
proc = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)
stdout, stderr = proc.communicate()
# I like to get True or False rather than 0 (True) or 1 (False)
# which is just backwards as usually 0 is False and 1 is True
status = not bool(proc.returncode)
return (status, stdout, stderr)
を、次のサンプルが完全にすべての作業をコマンド
osascript -e 'tell application "Microsoft PowerPoint" to activate
osascript -e 'tell application "Microsoft PowerPoint" to quit
:Macが私の
"C:\Program Files\Microsoft Office\Office15\Powerpnt.exe" /S "C:\Users\MyUser\example.pptx"
Taskkill /IM POWERPNT.EXE /F
START "" "C:\Program Files\Microsoft Office\Office15\Powerpnt.exe"
exec_cmd
ヘルパーを使用してWindows上で動作しない以下の、しかし
:たとえば3210
は、以下のサンプルでは、私のexec_cmd
ヘルパーを使用してWindows上で完全にすべての作業をコマンド
とそれエラー出:
WindowsError: [Error 2] The system cannot find the file specified
であっても、これは動作しません:
p = Popen(["START", "", "C:\Program Files\Microsoft Office\Office15\Powerpnt.exe"], stdout=PIPE, stderr=PIPE)
ただし、コマンドラインで同じコマンドだけでこれをやって罰金、あるいは見知らぬ人に動作することを実行しています作品:
なぜos.systemは動作するのですか?彼Popenバージョン?これらは単純なオープンで近いアプリケーションの例ですが、私が実行する予定のいくつかのコマンドの標準出力を得る必要があるので、もっとやりたいと思います。
これを分類する上での助けに感謝します。私はos.system
対subprocess.Popen
の基本的な整備を理解できないようです。
もぉと呼ばれるプログラムが存在しないので、あなたは
The system cannot find the file specified
エラーを取得しています。あなたが正しい。私はアホです。私はそれがWindows上で動作するこのPopenコマンドの恐ろしい 'shell = True'を渡す理由だと思います。 – tsantor