Python|システムコマンドを呼び出す
1056 ワード
Pythonでは、システムコマンドを呼び出す関数として最もよく使われています.osモジュールのsystem()とpopen()です.
しかし、二つにはいくつかの違いがあり、状況に応じて選択しなければならない.
system():
戻り値:0(成功)、1,2
コマンドの実行が終了するまで、同期呼び出しの成功フラグが返されず、情報はフィードバックされません.
メリット:
実行状態の戻り値があり、実行に成功したかどうかを判断できます.
欠点:
呼び出しシステムコマンドの戻り値を使用したい場合には適していません.
popen():
Linuxのechoに相当し、システムコマンドを呼び出したい場合に使用します.関数はfile readのオブジェクトを返し、read、readlineなどの操作を行うと実行された出力が表示されます.
しかし、呼び出しに失敗しても結果は返されません.
メリット:
戻り値を利用したい場合に適しています.
欠点:
実行に成功したかどうかは分からないが、少し制御できない.
例:
しかし、二つにはいくつかの違いがあり、状況に応じて選択しなければならない.
system():
戻り値:0(成功)、1,2
コマンドの実行が終了するまで、同期呼び出しの成功フラグが返されず、情報はフィードバックされません.
メリット:
実行状態の戻り値があり、実行に成功したかどうかを判断できます.
欠点:
呼び出しシステムコマンドの戻り値を使用したい場合には適していません.
popen():
Linuxのechoに相当し、システムコマンドを呼び出したい場合に使用します.関数はfile readのオブジェクトを返し、read、readlineなどの操作を行うと実行された出力が表示されます.
しかし、呼び出しに失敗しても結果は返されません.
メリット:
戻り値を利用したい場合に適しています.
欠点:
実行に成功したかどうかは分からないが、少し制御できない.
例:
# date , system , ,
# 0
>>> os.system("date +'%Y-%m-%d'")
2019-07-17
0
# popen、
>>> os.popen("date +'%Y-%m-%d'")
# read()
>>> os.popen("date +'%Y-%m-%d'").read().split()[0]
'2019-07-17'