みなさんこんにちは、現役エンジニアのサメハックです
未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。
Pythonの解説シリーズです。
今回はコマンドライン引数を渡す方法について学んでいきましょう!
駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!
この記事を読むと・・・
- コマンドライン引数を渡す方法がわかる
Pythonファイルにコマンドライン引数を渡そう
コマンドライン引数とは
コマンドライン(ターミナル)から実行ファイル(今回はPython)に渡す引数を
コマンドライン引数と言います。
コマンドライン引数を受け取る構文
import sys
# コマンドライン引数を扱うモジュール ※配列で取得される
args = sys.argv
sys.argvとは、
Python標準のコマンドライン引数を扱うモジュールだよ!
Python標準のコマンドライン引数を扱うモジュールだよ!
コマンドライン引数を渡す構文
% 渡したいコマンド 引数1 引数2 引数3...
実行例
ファイル “argsPrint.py”
import sys
# コマンドライン引数を扱うモジュール
args = sys.argv
print(args)
# 渡された引数を1つずつ出力する
for arg in args:
print(arg)
% python3 argsPrint.py Hello Hi Konnichiwa
['argsPrint.py', 'Hello', 'Hi', 'Konnichiwa']
argsPrint.py
Hello
Hi
Konnichiwa
0番目はファイル名を受け取るよ!


応用編:configファイルの設定を読み込み、Pythonに渡そう
今回覚えたことを流用して以下の処理を作ってみます。
- configファイルに変数登録
- シェルスクリプトでconfigファイルを読み込み
- コマンドライン引数をPythonに渡す
【 config.ini 】
NAME=サメハック
AGE=30
JOB=エンジニア
NOW=`date "+%Y-%m-%d %H:%M:%S"`
【 argsPrintCall.sh 】
#!/bin/zsh
# ファイルの読み込み
source ./config.ini
python3 argsPrint.py $NAME $AGE $JOB $NOW
【 argsPrint.py 】
import sys
args = sys.argv
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
名前:サメハック
年齢:30
職業:エンジニア
時刻:2023-06-21 21:29:57
まとめ
- コマンドライン引数とは、コマンドラインから実行ファイルに渡す引数
- Pythonでコマンドライン引数を受け取るにはsysをインポートする
- sys.argvを使用する
満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈