Python でコマンドを実行する
Python でコマンドを実行するには subprocess を用いる。
昔だと subprocess.call や subprocess.check_output を使っていたが、最近では run を使う。
ls とかを実行する場合は、
import subprocess
result = subprocess.run(["ls -la"], check=True, shell=True, stdout=subprocess.PIPE)
print(result.stdout) # これだとバイナリのまま
print(result.stdout.decode()) # テキストに戻す
といった感じ!
結果はstdoutに格納されるので、result.stdout で取り出すが、バイナリ文字列になっている。
decode()をすることで普通の文字になる。
ちなみにシェルの実行結果って \n 入るんで注意すること。
subprocess でありがちな "No such file or directory:"
No such file or directory: ってエラーが出る!!!
という人。
ほぼ100% shell=True をつけ忘れているので気をつけろ!!
以上!