Skip to content

dakesan/linux_python_minimum_example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

linux python minimum example

このレポジトリでは、pythonからbash scriptを呼び出す基本的な動作について解説することを目的として、簡単なプログラム例を紹介します。

個人的な情報共有資材ですが、再配布等はご自由に。

チュートリアル

レポジトリのクローン

python実行環境があるlinuxシステムにおいて、このレポジトリをクローンしてください。

※python実行環境はconda環境を使っていただくこともできます。(conda activate qiime2-2022.2)

git clone git@github.com:dakesan/linux_python_minimum_example.git

cloneできたら、そのディレクトリに移動します。

cd linux_python_minimum_example

コードの説明

test.sh

こちらはlinuxコマンドを実行するシェルスクリプトです。シェルスクリプトでは、特に明示せずともコマンドライン引数を$1, $2, ...に受け取ります。

試しに以下のコマンドをlinuxターミナルで実行して、コマンドライン引数が受け取れていることを確認しましょう。

bash test.sh 引数1 引数2

引数1、2のところには何を入れてもOK。自由に試してみましょう。

動作を確認したところでコードを見てみましょう。

#!/bin/bash

echo "一つめの引数は${1}でした"
echo "二つ目の引数は${2}でした"

echo "引数を見つけたので意味も無く五秒bashスクリプトは停止します...."

sleep 5

echo "bashスクリプトは実行完了しました"

このコードはシンプルに引数を受け取り、echoコマンドで表示させているだけです。

test.py

このpythonスクリプトはpythonからbashスクリプトを呼び出すコードが記述されています。

先ほどターミナル上で指定していた二つの引数を、ここではpythonファイル内に記述しています。(arg1, arg2がそれです)

subprocess.Popen()メソッドを使うことでターミナルへとコマンドを投げることができます。

ではpythonファイルを実行できることを確認しましょう。 linuxターミナルで以下のコードを実行します。

python test.py

無事、pythonおよびbashからのログが出力することが確認できましたか? もし見れていない場合、python2を使っている可能性があります。python3実行環境でお試しください。

では今度はpythonのファイルを直接編集してから再度pythonファイルをターミナルから実行してみましょう。

具体的にはarg1arg2を以下を参考に書き換えてから

arg1 = "書き換えた後の文字列"
arg2 = "同じく"

再びターミナルで実行です。

pyrhon test.py

どうですか?書き換えた内容が出力に反映されましたよね?

まとめ

実際にはpython内部でarg1は変数として動的に扱うことができます。

たとえば、特定のフォルダ下にあるファイル名を取得して投げたりだとか、連番をpythonで作成して投げたりとかとか・・・・。

このような変数の取り扱いについてイメージができれば幸いです。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published