【Python】Linuxのコマンドを実行する

 

こんにちは。のっくんです。

 

今回はPythonでLinux(Ubuntu)のコマンドを実行する方法をご紹介します。

 

実行環境

・Python 3.6
・Ubuntu 16.04

 

ls -lを実行する

 

UbuntuにインストールしたJupyterNotebookでコードを書いていきます。

 

Linuxのコマンドを使うには、subprocessモジュールをインポートします。このモジュールは元から入っているものですので、追加でインストールする必要はありません。

 

 

主な流れは以下の通り。

 

  1. cmdに実行したいコードを入れる
  2. cmd.splitで[“ls”,”-l”]というように分割してリストにする
  3. check_call関数に渡してコマンドの実行結果を得る
  4. コマンドが成功すれば0,エラーであれば”CalledProcessError”が返る

 

上記のコードを実行すると0が返ってきます。

 

ls -l の出力結果を得る

 

[speech_bubble type=”ln” subtype=”L1″ icon=”ilust/cat2_4_think.png” name=”ネコ”]ん??コマンドが実行できたことは分かったけど、出力結果を見たいって場合にはどうすればよいの?[/speech_bubble] [speech_bubble type=”ln” subtype=”L1″ icon=”profile_face.png” name=”のっくん”]大丈夫。ちゃんとそのための関数が用意されているんだ。[/speech_bubble]

 

以下のコードを実行してみましょう。

 

 

今度はcheck_output関数を使っています。こうすることでコマンドの実行結果がバイト列で返ってきます。

 

実行したコマンドの出力結果をファイルに書き込む

 

Linuxだと以下のコマンドを打つことで実行結果をファイルに書き込むことができます。

 

 

Pythonで同じことをするには以下のようにします。

 

 

pythonを実行したディレクトリ内にls_output.txtができますので、中身をみるとlsの結果が見えます。

 

 

以上となります。お疲れさまでした。