コマンドやエントリサブプロセスのpythonのプレゼンテーション(モジュール実行可能なシェルコマンド)

A、コマンドモジュール

1.はじめに

私たちはPythonのエンコーディングを使用しますが、フォルダ、移動ファイルなどの操作を作成するには、いくつかのシェルコマンドを実行したい場合は、我々は、シェルコマンドを実行するために、いくつかのPythonライブラリを使用することができます。

コマンドモジュールは、モジュールが内蔵されたモジュールを実行可能なシェルコマンドのpythonの、三つの機能の合計であるコマンドライブラリ、次のとおりです。

  1. GETSTATUS(ファイル):実行返すls -ld fileコマンドの結果を(-ld詳細な情報指定されたディレクトリのリストのみを表しています)。
  2. getoutput(CMD):CMDコマンドの実行、および戻り出力内容は、結果は、STRが返されます。
  3. getstatusoutput(CMD):CMDコマンドの実行、および状態(ステータス)に戻り、シェルコマンドの代わりに出力(出力)、状態の内容の実装は成功したが0の場合、出力は返されたシェルの結果は、ステータスを返します。

 

注意:

コマンドのバージョン2.6からの開始が推奨されていません:モジュールは、Python 3で削除されました。推奨サブプロセスモジュール(次の再導入のための待ち時間)。

バージョン3.xに(GETSTATUS()メソッドは、除去されるgetoutput()とgetstatusoutput)サブプロセスモジュールを配置しました。

 

2、GETSTATUS(ファイル)

返し実行  ls -ld file コマンドの結果(-ld詳細情報指定されたディレクトリのリストを表しのみ)。

- * -コーディング:UTF-8 - * - 
インポートコマンドを
ステータス = commands.getstatus(" は/ opt "つまり行わ:LS -ldは/ opt 
印刷ステータス


結果は 
-XR-Xをdrwxr。9ルートルート4096 2019年11月11日夜04時49分40秒は/ opt

 

3、getoutput(CMD)

CMDコマンド実行、および出力の内容を返し、STRとして結果を返します。

- * -コーディング:UTF-8 - * - 
インポートコマンドを
出力 = commands.getoutput(" lsの-lは/ opt " 、プリント出力


結果 
総額28 
drwx -X- - X. 4ルートルート2019年11月11日16時49分40秒4096 containerd
drwxr -XR-X 13ルートルート4096 2019年1月15日午後2時48分15秒nginx1.12 
drwxrwxr -X 7 500 500 4096 2019年1月14日10時30分05秒ノード-v8.6.0-linux- のx64
drwxr -xr-X 7ルートルート4096 2019年9月17日9時31分24秒プロジェクト
drwxr -XR-X 6ルートルート4096 2019年1月10日夜07時17分30秒python36
drwxrwxr -x 8ルートルート4096 2019年9月16日夜08時○○分52秒のRedis-4.0.10 
drwxr -XR-X 6ルートルート4096 2019年1月16日17時47分三十四秒ルビー

 

4、getstatusoutput(CMD)

 成功した出力が返されるシェルの結果であり、0であればCMDシェルは、コマンドを実行し、状態(ステータス)と出力(出力)、状態のステータス返信コマンドの代表的な内容の実装に戻ります。

- * -コーディング:UTF-8 - * - 
インポートコマンドを
ステータス、出力 = commands.getstatusoutput(" LS -l / OPT " 印刷 " の状態:%S "%のステータス
 プリント " 出力:%S "%の出力


結果
のステータス:0
出力:の総量 28 
drwx -X- - X. 4ルートルート2019年11月11日夜4時49分40秒4096 containerd
drwxr -XR-X 13ルートルート4096 2019年1月15日午後2時48分15秒nginx1.12 
drwxrwxr -X 7 500 500 4096 2019年1月14日10時30分05秒ノード-v8.6.0-linux- のx64
drwxr -xr-X 7ルートルート4096 2019年9月17日9時31分24秒プロジェクト
drwxr -XR-X 6ルートルート4096 2019年1月10日夜07時17分30秒python36
drwxrwxr -x 8ルートルート4096 2019年9月16日夜08時○○分52秒のRedis-4.0.10 
drwxr -XR-X 6ルートルート4096 2019年1月16日17時47分三十四秒ルビー

 

 二、サブプロセスモジュール

1.はじめに

subprocessモジュールを使用すると、新しいプロセスを開始し、入力/出力/エラーパイプを接続し、子プロセスのリターンコードを取得することができます。このモジュールの目的は、このようなos.systemやos.spawnなど一部の古いモジュールを交換します。

サブプロセスの共通機能モジュール

機能 説明
subprocess.getoutput(CMD) コマンド文字列の形式を受信し、コマンドを実行し、実行結果を返し、これos.popen(CMD).read()とcommands.getoutput(CMD)のような機能。
subprocess.getstatusoutput(CMD) CMDコマンド実行は、タプル(状態コマンド、コマンドの出力)を返し、その機能が類似commands.getstatusoutputです()。
subprocess.call() 指定された順序、コマンドの状態に実行戻り、os.system(CMD)のよう機能します。
subprocess.check_call() Pythonの2.5の新機能。あなたはそれ以外の場合は例外がスローされ、成功したステータスコードが返された実行した場合、指定したコマンドを実行します。どの機能subprocess.run(...、チェック=真)に相当します。
subprocess.check_output() 新機能ではPython 2.7。実行ステータスコードは、コマンドの実行結果に0復帰されるか、または例外をスローした場合、指定されたコマンドを実行します。
subprocess.run() Pythonの3.5の新機能。待機コマンドは、実行結果の実行が完了した後CompletedProcessを含むクラスのインスタンスを返し、指定されたコマンドを実行します。

 

2、getoutput、getstatusoutput

私たちの上にサブプロセスモジュールの上に置かれた)、3.xバージョンのコマンドは、GETSTATUS()メソッドが削除されている、と述べたgetoutput()と(getstatusoutput。

getoutputでサブプロセス、getstatusoutputの使用状況や使用状況のコマンドとまったく同じようにします。

- * -コーディング:UTF-8 - * - 
インポートサブプロセス
出力 = subprocess.getoutput(" PWD " プリント" OUTPUT1:%S "%の出力)

ステータス、出力 = subprocess.getstatusoutput(" PWD " プリント" STATUS2:%S "状態)
 プリント" OUTPUT2:%S "%の出力)


#の結果 
OUTPUT1:/ tmpに

STATUS2:0
OUTPUT2: / tmpに

 

3、subprocess.call()

ラン、ステータス・コードを戻す(コマンドが正常に実行された戻り0、他のステータスコードは、エラーステータスコードです)

subprocess.call(cmd, shell=False) 当shell=False的时候(默认),cmd为一个列表,当shell=True的时候,cmd为一个字符串,例如:

- * -コーディング:UTF-8 - * - 
インポートサブプロセス

してみてください#1 シェル= Falseの 
    RET1 = subprocess.call([ " LS "" -l "" は/ opt " ]、シェル= False)が
     印刷" 結果1:%sの"%のRET1)

    シェル= Trueの 
    RET2 = subprocess.call(" lxxs -l / TMP "、シェル= TRUE)  コマンドはエラーであり、0のステータスコードを返していない
    印刷" 結果2:%S "%のRET2)を
 除きAS E例外:
     印刷(E)

結果 
総額28 
drwx -X- - X. 4ルートルート2019年11月11日16時49分40秒4096 containerd
drwxr -XR-X 13ルートルート4096 2019年1月15日午後2時48分15秒nginx1.12 
drwxrwxr -X 7 500 500 4096 2019年1月14日10時30分05秒ノード-v8.6.0-linux- のx64
drwxr -xr-X 7ルートルート4096 2019年9月17日9時31分24秒プロジェクト
drwxr -XR-X 6ルートルート4096 2019年1月10日夜07時17分30秒python36
drwxrwxr -x 8ルートルート4096 2019年9月16日夜08時○○分52秒のRedis-4.0.10 
drwxr -XR-X 6ルートルート4096 2019年1月16日17時47分三十四秒ルビー
結果1:0

/ binに/ SH:lxxs:コマンドが見つかりません。
結果2: 127

 

4、subprocess.check_call()

あなたが実行する場合、実行コード0が返される成功した状態をそうでない場合は例外をスローし、( )。subprocess.CalledProcessError

実行ステータスコードは0が返され、0であれば実際にはそうでない場合は、例外がスローされ、基本的な機能をcheck_callおよびそれを呼び出しますが、リターン・ステータスコードのチェックを増やします

- * -コーディング:UTF-8 - * - 
インポートサブプロセス

してみてください
    RET = subprocess.check_call(" LS -l / OPT "、シェル= TRUE)
    印刷" 結果:%S "%のRET)
 以外subprocess.CalledProcessError Eとして:
     プリント(E)

 

5、subprocess.check_output()

実行された場合、コマンドを実行し、正常に実行結果が返され、そうでない場合は例外

- * -コーディング:UTF-8 - * - 
インポートサブプロセス

してみてください
    RET = subprocess.check_output(" LS -l / OPT "、シェル= TRUE)
    印刷" 結果:%S "%のRET)
 以外subprocess.CalledProcessError Eとして:
     プリント(E)


结果 
結果:B ' \ XE6 \ X80 \ XBB \ XE7 \ X94 \ xa8 \ XE9 \のx87 \ x8f 28 \ ndrwx - X - X 4ルートルート4096 2019年11月11日夜04時49分40秒containerd \ ndrwxr -X-R-X 13ルートルート4096 2019年1月15日午後2時48分15秒nginx1.12 \ ndrwxrwxr-X 7 500 500 4096 2019年1月14日午前10時30分05秒ノード-v8.6.0-Linuxベースのx64 \ ndrwxr -X-R-X 7ルートルート4096 2019年9月17日9時31分24秒プロジェクト\ ndrwxr-XR-X 6ルートルート4096 2019年1月10日午後07時17分30秒python36 \ ndrwxrwxr-X 8ルートルート4096 2019 / 9月16日夜08時00分52秒のRedis-4.0.10 \ ndrwxr-XR-X 6ルートルート4096 2019年1月16日夜五時47分34秒ルビー\ n '

 

6違い、コール、ch​​eck_callのcheck_output

以上の結果によると、私たちは見ることができます:

  • RET1 = subprocess.call(CMD):RET1ステータスコードは、CMDコマンド実行結果CMD実行換言すると、端末に表示されている場合は、コマンド実行のステータスコードのない決意の結果、直接subprocess.call(CMD )、あなたはステータスコードを受け取る変数を使用する必要はありません。
  • RET2 = subprocess.check_call(CMD):同じと呼びますが、ステータスコードは、コマンドが例外をスローします失敗したときに、あること、0でない場合。
  • RET3 = subprocess.check_output(CMD):条件コードCMDはCMD実行結果を命令し、RET check_call呼び出しが端末に表示され、実行結果check_output CMDが端末に表示されず、RETに格納されています。

おすすめ

転載: www.cnblogs.com/Zzbj/p/12129073.html