Linuxのコマンドは、Pythonを呼び出し、戻り値を取得します

システムOSモジュールメソッドを使用する方法:os.system(CMD)、戻り値はれるシェル命令実行ステータス・コードの後に返される、int型、0シェル、命令の実行が成功を示し256/512が見つからない表す方法が適用可能ですシェルコマンドの出力は、シーンのコンテンツには必要ありません

os.system(CMD)は、サブプロセスを開始し、動作内容とcmdは、標準出力に表示される場合は、子にcmdを実行します。

例えば:

1.リスト現在のディレクトリ内のすべてのファイル。

インポートOS 
ヴァル = os.system(' LS -Al ' を印刷ヴァルの#の出力は0である 
ヴァル= os.system(' LS -Al non_exist_folderを' 印刷ヴァル#の出力512 
ヴァル= os.system(" | LS -Alをnon_exist_val grepが" を印刷ヴァル#の出力256を

第二の方法は、()、os.popen使用され、ファイルの形で命令実行シェルの結果を返し使用(読み取り)またはreadlines()メソッドは、コンテンツをフェッチする必要があります。

os.system(CMD)またはos.popen(CMD)、前者の終了状態戻り値は、スクリプト実行処理の内容の戻り値を出力するスクリプトです。需要に応じて、実際の使用を選択します。

李の場合:

輸入OS 
os.popen、(' LS -l ' 
出力: <ファイルを開く' LS -l '、MODE ' R&LT ' 0x7f46af044930 AT> 
os.popen、(' LS -l ').read() は、文字列型を返します。結果の 
出力:" 。。12月11日10:09 B.TXTで12月11日10:09 A.TXT \ -n-RW RW-R --- 0 1 roaddbのroaddbで合計0 \ -n-RW RW-R --- 0 1 roaddbのroaddb \ N- ' 
os.popen、(' -l LS ').readlines() は、結果のタイプのリストを返し 
出力:[ ' 合計0 \ N- ' '-rw-RW-r--の1 roaddb roaddb 0 12月11日10時09 A.TXT \ n ' ' -rw-RW-r--の1 roaddb roaddb 0 12月11日10時09 B.TXT \ n ' ] 

ヴァル = os.popen(' -Al LS ' 用の I におけるval.readlines():
     印刷私  

3つの方法は、コマンドモジュールを使用し、三つの方法があります使用することができます。

タプル(ステータス、出力)リターン・ステータスおよび実行の実行結果の形でリターン命令である(1)commands.getstatusoutput(CMD)。CMDが実際{CMD;}に従って実行されることを特徴とする実施形態2>&1、出力情報またはコンソール出力誤差、尾部に含まれていない出力改行を含んでいます。

(2)commands.getoutput(CMD)、CMDの出力を返します。

(3)commands.getstatus(ファイル)、返すLS -lファイルの実行結果文字列 getoutputと呼ばれ、この方法はお勧めしません

インポートコマンド
AA = commands.getstatusoutput(' LS -l ' 
出力:(0、' 合計0 \ -n-RW RW-R --- 0 12月11日に1 roaddbのroaddb 10:09 A.TXT \ -n-RW-RW。 12月1日にroaddb roaddb 0 -r-- 10:09 B.TXT。11 ' #の戻りAタプル比較os.popen(CMD)は結果を返し、我々は、出力が改行末尾が含まれていないことを見出した 
(BB = commands.getoutputを' -l LS '#1 のみ実行結果戻り 
出力:' 。合計0 \ -n-RW RW-R --- 0 12月11日に1 roaddbのroaddb午前10時09 A.TXT \ -n-RW-RW-r--の1 roaddb。 0 12月11日10:09 B.TXT roaddb ' 
 CC = commands.getstatus(' A.TXT "#のクエリファイルのステータス
出力:'-rw-r--のRW-0 1 roaddbのroaddb 10:09 A.TXT 12月11日に' 
DD = commands.getstatusoutput(' LS -l non_exist_folder '#の実行結果がエラーメッセージ情報やコンソール出力が含ま 
出力:(512、" LS:CANないアクセス'non_exist_folder':そのようなファイルやディレクトリはありません"

os.popen(CMD)がファイルライクオブジェクトを返し、commands.getoutput(CMD)は、より多くの場合、それらを使用するために、文字列型の出力を返し、より便利に。

方法IVは、サブプロセスモジュールは、あなたが出力され、実行状態を取得することができます実行した後、子プロセスと子プロセスの入力と出力、エラー出力パイプラインを作成する際に、指定することができ、多くのサブプロセスを作成することができます。

(1)subprocess.run():python3.5新しい関数は、指定されたコマンドを実行し、待機コマンドは、実行結果の実行が完了した後CompletedProcessを含むクラスのインスタンスを返します。

(2)subprocess.call():指定された順序、コマンドの実行状態に戻るには、関数はos.system(CMD)と同様です

(3)subprocess.check_call():あなたが成功したステータスコードが返された実行した場合、新たな機能を、指定された順序は、そうでない場合は例外がスローされるのpython2.5。

说明:subprocess.run(引数、*、STDIN =なし、入力=なし、STDOUT =なし、標準エラー=なし、シェル=偽、タイムアウト=なし、チェック=偽、universal_newlines =偽)

     subprocess.call(引数、*、STDIN =なし、STDOUT =なし、標準エラー出力=なし、シェル= Falseの、タイムアウト=なし)

     subprocess.check_call(引数、*、STDIN =なし、STDOUT =なし、標準エラー出力=なし、シェル= Falseの、タイムアウト=なし)

    引数は、次のような指定された文字列シェルコマンドは、「LS -l」それはシェル=トゥーレ必要であれば、シェルコマンドを表します。そうでなければそのような配列の「LS」のようなデフォルト表現シェル変数、「 - L」。

    より複雑なシェルステートメントを使用している場合、モジュールは、第1のコマンドをフォーマットヘルプをのshlex shlex.split()メソッドを使用して、run()メソッドまたはpopenのに渡すことができます。

subprocess.run()、subprocess.call()、subprocess.check_call()、subprocess.check_output()関数は、我々は、より複雑な機能を必要とする場合ので、あなたがサブプロセスすることができ、達成するためにsubprocess.Popenのパッケージを通って前進しています完全に.Popen

利用栗の場合:

インポートのshlex
 インポートザサブプロセス
コマンド = ' LS -l ' 
引数 = shlex.split(' LS -l ' 
BB = subprocess.Popen(引数)BB popenのがオブジェクトであり、オブジェクトを読み取ることができない()やreadlines()読み出し
出力:合計0
 -rw-R --- RW 12月11日10時09分0に1 roaddbのroaddb。A.TXT
 -rw-R --- RW 0 10時09分12月11日に1 roaddbのroaddb。B.TXTので改行は、クリック数で終わる 
AA = subprocess.call(' -l LS '、シェル= TRUE)  その戻り値シェルコマンド実行戻りコード
出力:合計0
。-rw-R --- RWを1 roaddb roaddb 12月11日午前10時09分0 A.TXT
RW-r--の1 - RW roaddb roaddb 12月11日10時09分0でB.TXT #が直接返さ

 フォローアップも学びを継続する必要があります。https://www.cnblogs.com/lincappu/p/8270709.html

python3の場合

期待:あなたはのpython3とリターンで結果を実行したいcurlコマンド、結果はJSON体を返さ

分析:

CMD = 'カール-s "http://127.0.0.1:8080/xxxxx"' 

1)使用os.system(CMD)の出力は、コンテンツを取得することはできません

2)使用os.popen(CMD).read()JSON本体戻り$ {AA}を取得することができ、json.loadsによって$ {AA})は(辞書JSONボディスタイルに変換することができます。

3)コマンドモジュールはPython3.0破棄されます

4)(CMD)出力json.loads($ {AAにより、タプル、第二の値タプル実行結果$ {AA}を返し、commands.getstatusoutput(CMD)に類似python2をsubprocess.getstatusoutput })JSON本体は、辞書形式に変換することができます。

参考:https://www.cnblogs.com/pengpp/p/9833349.html

おすすめ

転載: www.cnblogs.com/mianbaoshu/p/12024498.html