web-dev-qa-db-ja.com

Pythonターミナルのスクリプト実行コマンド

私はしばらく前にどこかでこれを読みましたが、見つけることができないようです。ターミナルでコマンドを実行し、結果を出力するコマンドを見つけようとしています。

たとえば、スクリプトは次のようになります。

command 'ls -l'

ターミナルでそのコマンドを実行した結果が出力されます

77
Ali

これを行うにはいくつかの方法があります。

簡単な方法は、osモジュールを使用することです。

import os
os.system("ls -l")

サブプロセスモジュールを使用すると、より複雑なことが実現できます。たとえば、次のとおりです。

import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
142
Uku Loskit

私はサブプロセスモジュールの使用を好む:

from subprocess import call
call(["ls", "-l"])

理由は、スクリプトでいくつかの変数を渡したい場合、これは非常に簡単な方法を提供するためです。たとえば、コードの次の部分を取ります

abc = a.c
call(["vim", abc])
27
Kevin Pandya

実際には、サブプロセスに関する質問は良い読み物になります

7
pyfunc

また、commands.getstatusoutputも調べる必要があります

これは長さ2のタプルを返します。最初は戻り整数(0-コマンドが成功した場合)で、2番目は端末に表示される出力全体です。

Lsの場合

    import commands
    s=commands.getstatusoutput('ls')
    print s
    >> (0, 'file_1\nfile_2\nfile_3')
    s[1].split("\n")
    >> ['file_1', 'file_2', 'file_3']
3
minocha

os.popen()は非常に簡単に使用できますが、Python 2.6から非推奨になりました。代わりにsubprocessモジュールを使用する必要があります。

ここを読む: os.popen(command)を文字列に読み込む

1
Paolo Rovelli
import os
os.system("echo 'hello world'")

これは動作するはずです。出力をpythonシェルに出力する方法がわかりません。

1
Mr_pzling_Pie

「os」モジュールをインポートして、次のように使用できます。

import os
os.system('#DesiredAction')
0
Kobe Keirouz