システム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本体は、辞書形式に変換することができます。