Pythonを学ぶ上で必須となるのがコマンドライン引数。そんなコマンドライン引数ですが、初めてPythonを学習する人にはかなり難しいのではないでしょうか。
この記事ではPythonで使用するコマンドライン引数の渡し方、取得方法を初心者でも分かるように解説するので、学習につまずいている方はぜひ参考にしてください。
コマンドライン引数とは?
コマンドライン引数とは、Pythonでプログラムを実行する際に指定する引数のことで、プログラムに引数の情報を渡す役割を持ちます。
コマンドライン引数はプログラム実行時に動作を変更する場合によく使われます。
コマンドライン引数の渡し方
プログラム実行時に動作を変更するときによく使われるコマンドライン引数ですが、まずはコマンドライン引数を渡す方法を知っておく必要があります。
コマンドライン引数の渡し方は簡単なので、安心してくださいね。
コマンドライン引数の渡し方を解説
それではコマンドライン引数の渡し方を解説していきます。
基本的なコードは次の通りです。
$ Python ファイル名.py 引数1 引数2 引数3… |
これが基本的な渡し方になります。
実際にファイル名、引数を設定すると以下のように記述します。
$ Python test.py sample1 sample2 sample3 |
「sample1」が引数1、「sample2」が引数2、「sample3」が引数3に対応しています。
これだけの記述でコマンドライン引数を渡せるので、簡単ですよね。
注意点として、「test.py」などのファイル名はファイルパスとして表示されるので注意してください。
次からは取得方法について学んでいくので、渡し方について分からなくなったら、ここまで戻って確認してくださいね。
コマンドライン引数の取得方法
それではコマンドライン引数の取得方法を解説していきます。
取得方法に関しては2種類あります。標準モジュールである「sys.argv」を利用する方法と、同じく標準モジュールである「argparse」を利用する方法です。
どちらの方法でもコマンドライン引数を取得できるので、ぜひご自身で実践してみてくださいね。
sys.argvモジュールの基本
最初に解説するやり方は標準モジュール「sys.argv」を使用した方法です。
流れとしては以下のようになります。
- モジュール「sys.argv」を呼び出す
- コマンドライン引数を参照する
コマンドライン引数の渡し方と同じく簡単ですよね。
それでは1つずつ詳しく見ていきましょう。
①モジュール「sys.argv」を呼び出す
1 import sys 2 |
まずはPythonの標準モジュールである「sys.argv」を呼び出す必要があります。
そのためには、コード上部に「import sys」と記述します。
②コマンドライン引数を参照する
次にコマンドライン引数を参照します。
1 import sys 2 print (sys.argv[0]) 3 print (sys.argv[1]) 4 print (sys.argv[2]) |
ここでは「print」を使用したコードを利用しています。
「sys.argv」の後に記述してある数字は後ほど詳しく解説するので、安心してくださいね。
sys.argvを使用したコマンドライン取得方法
ここまでは「sys.argv」を使用したコマンドライン取得方法の流れを紹介しました。
ここからは最初に解説した渡し方を踏まえて、実際のコードを解説していくので確認してみてください。
コード、コマンドライン引数はこれまで解説したものを使います。
引数なしでコードを実行した場合
コマンドライン引数を渡さない場合の実行結果は、次のようになります。
test.py |
この場合はファイルパスである「test.py」のみが実行結果として出てきます。
引数を1つ渡してコードを実行した場合
コマンドライン引数を1つ渡した実行結果は次の通りです。
test.py sample1 |
ファイルパスである「test.py」と1つ目の引数「sample1」が実行結果となります。
引数を2つ渡してコードを実行した場合
引数を2つに増やしたときの実行結果です。
test.py sample1 sample2 |
ファイルパス「test.py」引数「sample1」、「sample2」が実行結果になっていますね。
引数を3つ渡してコードを実行した場合
引数を3つ渡した場合にも2つ引数を渡したときと同じ実行結果になります。
test.py sample1 sample2 sample3 |
このように引数を増やして渡すこともできます。
ファイルパスの後ろに半角スペースを入れて、任意のコマンドライン引数を入力すると、引数を増やすことができますよ。
argparseモジュールの基本
次にPythonの標準モジュールの1つである「argparse」を使ったコマンドライン引数取得方法の基本を解説していきます。
「argparse」を使用したコマンドライン引数の取得方法は次の4つの手順で行われます。
- モジュール「argparse」を呼び出す
- パーサーの作成
- コマンドライン引数を設定する
- コマンドライン引数の解析
1つずつ解説していくので、分からなくなったら1つ前の段階に戻って確認してみてくださいね。
①モジュール「argparse」を呼び出す
1 import argparse 2 |
まず、モジュールを呼び出すところから始めます。「import argparse」と記述すると、モジュールが呼び出せます。
②パーサーの作成
1 import argparse 2 parser = argparse.ArgumentParser( ) |
モジュールを呼び出した後に行うのが、パーサーの作成です。
パーサーは「parser = argparse.ArgumentParser ()」と記述すると作成できます。
③コマンドライン引数を設定する
1 import argparse 2 parser = argparse.ArgumentParser( ) 3 parser.add_argument( ) |
次にコマンドライン引数の設定を行います。コマンドライン引数の設定は「parser.add_argument ()」と記述することで可能です。
④コマンドライン引数の解析
1 import argparse 2 parser = argparse.ArgumentParser( ) 3 parser.add_argument( ) 4 args = parser.parse_args( ) 5 |
最後に行うのが、コマンドライン引数の解析です。手順3までに設定したコマンドライン引数の解析を行います。
記述するコードは「args = parser.parse_args ()」です。
ここまで解説した4つの手順が「argparse」を使用したコマンドライン引数取得方法の基本です。
次は実際のコードでコマンドライン取得方法を解説していくので、まず基本形を確認してみてくださいね。
argparseを使用したコマンドライン取得方法
ここまでは「argparse」を使用した基本の流れを紹介しました。
ここからは実際のコードを元にしてコマンドライン取得方法を解説していくので、分からなくなったら基本の流れを見直してみてくださいね。
①モジュール「argparse」を呼び出す
1 import argparse 2 |
モジュールの呼び出し方については先ほど説明した通りです。「argparse」でコマンドライン引数を取得する場合には必要になるので、覚えておきましょう。
②パーサーの作成
1 imoprt argparse 2 parser = argparse.ArgumentParser(descriotion=‘テストコードです’) 3 parser.add_argument( ) 4 args = parser.parse_args( ) |
次に行うのがパーサーの作成でしたね。基本的には先ほど説明した方法で大丈夫ですが、ここで引数を設定できます。引数を設定すると、プログラムを実行した際に情報を表示できます。
よく使われる引数は次の通りです。
prog:プログラムの名称
usage:プログラムの利用方法の説明
description:プログラムの説明
今回のサンプルコードでは、プログラムの説明する引数「description」を記述します。
③コマンドライン引数を設定する
1 import argparse 2 parser = argparse.ArgumentParser(descriotion=‘テストコードです’) 3 parser.add_argument(‘arg1’) 4 parser.add_argument(‘arg2’ help=‘aaaaaa’) 5 args = parser.parse_args( ) 6 |
パーサー作成後は、コマンドライン引数を設定します。設定するコマンドライン引数は複数設定が可能です。
こちらもコードに引数を追加できます。追加した引数は解析を行う前に実行されます。
よく使われる引数は次の通りです。
help:引数の説明
type:プログラムの文字列を変換。指定しなければstr型として扱われる。
今回は1行目のコードには引数を設定せず、2行目のコードに引数の説明を表す「help」を記述します。
④コマンドライン引数の解析
1 import argparse 2 parser = argparse.ArgumentParser(descriotion=‘テストコードです’) 3 parser.add_argument(‘arg1’) 4 parser.add_argument(‘arg2’ help=‘aaaaaa’) 5 args = parser.parse_args( ) 6 |
最後にここまで記述したコマンドライン引数を解析します。コードについては先ほど説明した「args = parser.parse_args ()」を利用して下さい。
ここまで、先ほど紹介してきたやり方で実際のコードを記述しました。
これに出力する役割を持つ「print」を付け加えると、次のようになります。
1 import argparse 2 parser = argparse.ArgumentParser(descriotion=‘テストコードです’) 3 parser.add_argument(‘arg1’) 4 parser.add_argument(‘arg2’ help=‘aaaaaa’) 5 args = parser.parse_args( ) 6 print(‘arg1=’+args.arg1) 7 print(‘arg2=’+args.arg2) 8 |
これを実行すると次の通りになります。
$ Python test.py sample1 sample2 arg1 = sample1 arg2 = sample2 |
流れを理解しておくことで分かりやすくなるので、それぞれの手順をひとつずつチェックしてみてくださいね。
エラーが出た場合の対処方法
ここまではコマンドライン引数を取得する方法を2つ解説しました。
2つのやり方で実際にコードを書いてみると、エラーが出てきてしまうこともあります。
ここではエラーの原因としてありがちなパターンを2つまとめたので、エラーで困ったときは確認してみてくださいね。
文字列に間違いがいないかを確認する
よくあるのがコードの書き間違いです。
アルファベットの「i」と「l」、アルファベット「o」と数字の「0」、アルファベットの「q」と数字の「9」などが間違えやすいので、注意してください。
すべてのプログラミング言語に当てはまりますが、コードの文字が1文字違うだけでプログラムは動かなくなってしまうので、コードを記述する際には確認しながら記述してみてくださいね。
Pythonがきちんとインストールできていない
Pythonを学習する前には、学習するパソコンにPythonをインストールする必要があります。インストール段階できちんとインストールできていないとエラーとなり、プログラムが実行できません。
インストールできていてもPythonのバージョンが古いものだったりすると、モジュールが対応していないこともあるので、エラーが出た場合はバージョンの確認もしてみてくださいね。
Pythonのインストール方法についてはこちらの記事で丁寧に解説しています!
https://www.tech-teacher.jp/blog/python-install/
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
まとめ
コマンドライン引数の渡し方や取得方法について解説してきました。
コマンドラインはPythonを実行する上でよく使われるので、コマンドラインの学習でつまずいている方は参考にしてみてくださいね。
このブログでは他にもPythonについて解説しています!ぜひご覧ください。
https://www.tech-teacher.jp/blog/python-function/