ターミナルから複数の引数を渡してPython関数を実行する方法
Pythonで、ターミナル(コマンドライン)から入力された引数を受け取って関数を実行したい場合は、まず sys モジュールをインポートします。そして、sys.argv を使うことで、コマンドラインで指定された引数を文字列のリストとして取得し、それを関数に渡して実行できます。
サンプルコード
# fubar.py
import sys
def print_funcargs(arg1, arg2, arg3):
print(arg1 + ' ' + arg2 + ' ' + arg3)
if __name__ == "__main__":
a = sys.argv[1]
b = sys.argv[2]
c = sys.argv[3]
print_funcargs(a, b, c)
print(sys.argv)
ターミナルで次のように実行します。
$ python fubar.py I adore books
出力結果
I adore books ['fubar.py', 'I', 'adore', 'books']
仕組みの解説
sys.argvは、コマンドライン引数を文字列のリストとして保持します。- リストの先頭要素
sys.argv[0]にはスクリプト名(この例ではfubar.py)が自動的に格納され、実際に渡した引数はsys.argv[1]以降に順番に入ります。 - 上記の出力例では、
'I'・'adore'・'books'の3つの引数がそれぞれ変数a・b・cに代入され、関数print_funcargs()に渡されて結合・表示されています。 - すべての引数は文字列として受け取られるため、数値として計算に使いたい場合は
int()やfloat()による型変換が必要です。
補足:より柔軟な引数処理を行いたい場合
引数の個数が決まっていない場合や、オプション付きの引数を扱いたい場合は、標準ライブラリの argparse モジュールを使うと、ヘルプ表示や型変換、必須引数のチェックなどを簡単に実装でき、より堅牢なコマンドラインツールを作成できます。
-
Matplotlibで複数ラベル付きの棒グラフを描画する方法を徹底解説
Matplotlibを使って、グループごとに複数のラベルを持つ棒グラフを作成する方法を紹介します。この記事では、男性と女性の平均スコアを比較するグループ化された棒グラフを例に、各バーに数値ラベルを自動表示する手法まで詳しく解説します。実装の手順men_means、men_std、women_means、women_std のデータセットを用意します。NumPyを使って、グループのX軸上の位置(インデックス)を作成します。棒の幅(width)を初期化します。subplots() メソッドで図(figure)とサブプロット(axes)を作成します。bar() メソッドを使って、rects1 と r
-
iOS 7で迷惑な発信者をブロックする方法を徹底解説
iOS 7の新機能「着信拒否」とは しつこいテレマーケティングの電話や、何度も連絡してきて気味の悪い相手に悩まされていませんか?iOS 7で追加された数多くの新機能の中でも、特に実用的なのが標準搭載された番号ブロック機能です。OSレベルで相手からの電話、メッセージ(SMS)、FaceTimeを完全に遮断できるようになりました。 電話アプリからブロックする手順 まずは「電話」アプリからブロックする方法を見ていきましょう。通話履歴にある相手の名前の横に表示される「i」アイコンをタップし、画面下部の「この発信者を拒否」を選択するだけです。これだけで、その相手からの着信が拒否されます。 また、「メッ