A、コマンドモジュール
1.はじめに
私たちはPythonのエンコーディングを使用しますが、フォルダ、移動ファイルなどの操作を作成するには、いくつかのシェルコマンドを実行したい場合は、我々は、シェルコマンドを実行するために、いくつかのPythonライブラリを使用することができます。
コマンドモジュールは、モジュールが内蔵されたモジュールを実行可能なシェルコマンドのpythonの、三つの機能の合計であるコマンドライブラリ、次のとおりです。
- GETSTATUS(ファイル):実行返す
ls -ld file
コマンドの結果を(-ld詳細な情報指定されたディレクトリのリストのみを表しています)。 - getoutput(CMD):CMDコマンドの実行、および戻り出力内容は、結果は、STRが返されます。
- 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違い、コール、check_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に格納されています。