web-dev-qa-db-ja.com

Pythonでは、システムコマンドの出力を文字列として取得します

In python osまたはサブプロセスを使用してシステムコマンドを実行できます。問題は、出力を文字列として取得できないことです。例:

>>> tmp = os.system("ls")
file1 file2
>>> tmp
0

Check_out関数を持たない古いバージョンのサブプロセスがあり、完全な管理者権限を持っていないサーバーでコードが実行されるため、そのモジュールを更新する必要のないソリューションを好むでしょう。

この問題はささいなように思えますが、ささいな解決策が見つかりませんでした

27
S4M

os.popen() を使用します。

tmp = os.popen("ls").read()

これを行う新しい方法(> python 2.6)は subprocess を使用することです。

proc = subprocess.Popen('ls', stdout=subprocess.PIPE)
tmp = proc.stdout.read()
68
Hari Menon