コンテンツにスキップ

Top

Python でコマンドを実行する

Python でコマンドを実行するには subprocess を用いる。

昔だと subprocess.call や subprocess.check_output を使っていたが、最近では run を使う。

ls とかを実行する場合は、

1
2
3
4
5
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 をつけ忘れているので気をつけろ!!

以上!