4

テキストを返す Windows コンソール アプリケーションがあります。そのテキストを Python スクリプトで読みたいです。os.systemで読み込もうとしたのですが、うまくいきません。

import os
foo = os.system('test.exe')

test.exe が "bar" を返すと仮定すると、変数 foo を "bar" に設定する必要があります。しかし、何が起こるかというと、コンソールに "bar" が表示され、変数 foo が 0 に設定されます。

希望する動作を得るために何をする必要がありますか?

4

2 に答える 2

8

サブプロセスを使用してください

import subprocess
foo = subprocess.Popen('test.exe',stdout=subprocess.PIPE,stderr=subprocess.PIPE)

http://docs.python.org/library/subprocess.html#module-subprocess

于 2009-12-11T04:26:35.137 に答える
2

警告:これは UNIX システムでのみ機能します。

subprocessキャプチャする出力だけが必要な場合、それはやり過ぎだと思います。次の使用をお勧めしますcommands.getoutput()

>>> import commands
>>> foo = commands.getoutput('bar')

技術的にはpopen()、ユーザーに代わって を実行しているだけですが、この基本的な目的についてははるかに簡単です。

ところで、os.system()コマンドの出力は返されません。終了ステータスのみが返されるため、機能していません。

または、終了ステータスとコマンド出力の両方が必要な場合は、 を使用しますcommands.getstatusoutput()。これは、(ステータス、出力) の 2 つのタプルを返します。

>>> foo = commands.getstatusoutput('bar')
>>> foo
(32512, 'sh: bar: command not found')
于 2009-12-11T04:34:52.673 に答える