コマンドライン引数の利用

<目次>


コマンドライン引数とは?

シェル(ターミナル)上でコマンドを実行する際に付ける引数のこと。例えばls -lの-lや、ls ~の~がコマンドライン引数。


Pythonにおけるコマンドライン引数とは?

予めスクリプトファイル内に全てを記述して用意できるならコマンドライン引数は不要だが、lsコマンド等と同様に「実行時に引数で必要な指示を与える」ことでより使いやすいプログラムになる。例えばレポート4では都市を巡回するための経路が最も短くなるような巡回路を探す必要があるが、都市の座標等が保存されたファイルはinput1.txt〜input4.txtの4つが別途指定されており、使い分ける必要がある。

# 実行イメージ
% python3 report4.py input1.txt
city_num = 8
[[20, 20], [120, 20], [220, 20], [70, 120], [170, 120], [270, 120], [20, 220], [120, 220]]
min_dist = 847.2135954999579, min_path = [0, 3, 6, 7, 4, 5, 2, 1, 0]
 
% python3 report4.py input2.txt
city_num = 9
[[20, 20], [120, 20], [220, 20], [70, 120], [170, 120], [270, 120], [20, 220], [120, 220], [220, 220]]
min_dist = 947.2135954999579, min_path = [0, 3, 6, 7, 8, 4, 5, 2, 1, 0]
 
% python3 report4.py input3.txt
city_num = 10
[[20, 20], [120, 20], [220, 20], [320, 20], [70, 120], [170, 120], [270, 120], [20, 220], [120, 220], [220, 220]]
362880
min_dist = 1047.213595499958, min_path = [0, 1, 2, 3, 6, 5, 9, 8, 7, 4, 0]
 
% python3 report4.py input4.txt
city_num = 11
[[20, 20], [120, 20], [220, 20], [320, 20], [70, 120], [170, 120], [270, 120], [370, 120], [20, 220], [120, 220], [220, 220]]
3628800
min_dist = 1147.2135954999578, min_path = [0, 1, 2, 3, 7, 6, 5, 10, 9, 8, 4, 0]

sysモジュールを利用して引数を読み込む

import sys
arg0 = sys.argv[0]
arg1 = sys.argv[1]
print('sys.argv[0] = {0}, [1] = {1}'.format(arg0, arg1))

参考サイト