pythonでのシェル実行の知識ポイント

os.system

systemメソッドは、外部プログラムを実行するための子プロセスを作成し、メソッドは外部プログラムの結果のみを返します。この方法は、外部プログラムに出力結果がない状況に適しています。

import os
os.system('ls')

commands.getstatusoutput

コマンドモジュールのgetoutputメソッドを使用します。このメソッドとpopendの違いは、popenがファイルハンドルを返すのに対し、このメソッドは外部プログラムの出力結果を文字列として返すため、多くの場合、より便利です。

主な方法:

このメソッドは、外部プログラムの出力結果を取得する必要がある場合に非常に役立ちます。たとえば、urllibを使用してWeb APIを呼び出す場合、取得したデータを処理する必要があります。 os.popen(cmd)コマンドの出力を取得するには、read()またはreadlines()を再度呼び出します(a = os.popen(cmd).read()など)。

import os
ls = os.popen('ls')
print ls.read()

commands.getstatusoutput

コマンドモジュールのgetoutputメソッドを使用します。このメソッドとpopendの違いは、popenがファイルハンドルを返すのに対し、このメソッドは外部プログラムの出力結果を文字列として返すため、多くの場合、より便利です。
主な方法:

import commands
commands.getstatusoutput('ls -lt')   #戻る(status, output)

subprocess.call

Pythonの公式ドキュメントによると、これらのモジュールを置き換えるためにサブプロセスモジュールが使用されます。 Python-msshに実装された並列sshツールがあります。コードは非常に短いですが、非常に興味深いので、スレッド内のサブプロセスを呼び出して子プロセスを開始します。

from subprocess import call
call(["ls","-l"])
import shlex, subprocess
def shell_command(cmd, timeout):
 data ={"rc":False,"timeout":False,"stdout":"","stderr":""}try:
 process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)try:
  outs, errs = process.communicate(timeout=timeout)
  data["stdout"]= outs.decode("utf-8") 
  data["stderr"]= errs.decode("utf-8") 
  data["rc"]= True

 except subprocess.TimeoutExpired :
  process.kill()
  outs, errs = process.communicate()
  data["rc"]= False 
  data["stdout"]= outs.decode("utf-8") 
  data["stderr"]="timeout"
  data["timeout"]= True 

 except Exception as e :
 data["rc"]= False 
 data["stderr"]= e 

 finally:return data 

これまで、pythonでのシェル実行の知識ポイントに関するこの記事を紹介しました。関連するpythonシェル実行コンテンツについては、ZaLou.Cnで以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。

Recommended Posts

pythonでのシェル実行の知識ポイント
Pythonの知識ポイント
Python3補足知識ポイント
Pythonの高度な知識ポイント
Pythonの基礎知識(1)
Pythonのタプルの添え字
2020--Python文法の一般的な知識のポイント
Python3.9の注目すべき更新ポイント
pythonでのwheelの使用法
Pythonの対数法の要約
Python開発でのパンダの使用
Pythonクローラーの基本的な知識ポイントの仕上げ
Python開発でのnumpyの使用
Pythonでの辞書の詳細な使用法
pythonでのosパッケージの使用
pythonでのタプルの使用法
pythonmysqlのパラメータ化の説明
pythonでのrbの意味を理解する
Pythonは2つのスレッドの代替実行を実装します
pythonでのJWTユーザー認証の実装
python標準ライブラリのglobの分析
pythonにdjangoモジュールをインストールする方法
pythonでのadbの機能は何ですか
Centos7システム強化の知識ポイントを要約する
pythonの関数
Python3.9の7つの機能
PythonはDoudizhuでカードのシャッフルを実装します
pythonでのリストの意味と使用法
ubuntuでpythonをアンインストールした結果、非常に
UbuntuでのPythonでのGDALのインストールと使用
Pythonでのパッケージの導入を理解する方法
pythonで番号のリストを理解する方法
pythonで写真を自動的にダウンロードする方法の例
03.Pythonエントリの演算子
12.Python3でのネットワークプログラミング
pythonでステートメントを印刷する
Python構文の基本
Pythonでの同時リクエスト
Pythonの基本構文
Ubuntuにpythonをインストールする
pythonのPrettytableモジュール
pythonでguiを書く
PythonでのMongoDBの使用
09.Python3の共通モジュール
PythonのStr文字列
Pythonでの計算ジオメトリ
pythonで円の領域を見つける方法
Pythonのハードコア操作を1分で学ぶ
Pythonで一般的に使用されるサードパーティライブラリの大規模なインベントリ