Pythonにコマンドライン引数を渡す方法について解説していきます。


■ コマンドライン引数とは?
コマンドライン(ターミナル)から実行ファイル(今回はPython)に渡す引数


■ sys.argvを使おう!
sys.argvとは
Python標準のコマンドライン引数を扱うモジュール


■ Pythonファイルを用意しよう!
実験用にargsPrint.pyというファイルを作りましょう。

____________________
import sys

# コマンドライン引数を扱うモジュール
args = sys.argv

print(args)

# 渡された引数を1つずつ出力する
for arg in args:
    print(arg)

____________________

■ コマンドライン引数を渡して実行してみよう!

コマンドライン引数の渡し方
%渡したいコマンド 引数1 引数2 引数3...
____________________

% python3 argsPrint.py Hello Hi Konnichiwa

['argsPrint.py', 'Hello', 'Hi', 'Konnichiwa']
argsPrint.py
Hello
Hi
Konnichiwa

____________________


■ 応用編:configファイルの設定を読み込み、Pythonに渡そう

今回覚えたことを流用して以下の処理を作ってみましょう!

①configファイルに変数登録
②シェルスクリプトでconfigファイルを読み込み
③コマンドライン引数をPythonに渡す

____________________

■config.ini
NAME=あきぶろぐ
AGE=28
JOB=エンジニア
NOW=`date "+%Y-%m-%d %H:%M:%S"`

____________________
■argsPrintCall.sh
#!/bin/zsh
# ファイルの読み込み。sourceを使っても省略形の"."を使ってもいい
# . ./config.ini
source ./config.ini

python3 argsPrint.py $NAME $AGE $JOB $NOW

____________________
■argsPrint.py
import sys

name = args[1]  # $NAME
age = args[2]   # $AGE
job = args[3]   # $JOB

print("名前:" + name)
print("年齢:" + age)
print("職業:" + job)
print("時刻:" + now)

____________________

■ 実行してみよう!
____________________

% chmod 777 argsPrintCall.sh
% ./argsPrintCall.sh
名前:あきぶろぐ
年齢:28
職業:エンジニア
時刻:2021-06-21 21:29:57

____________________


現場からは以上です👾