Python

Pythonのコマンドライン引数がわかる!渡し方・取得方法を分かりやすく解説

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」と記述します。

②コマンドライン引数を参照する

次にコマンドライン引数を参照します。

import sys
print (sys.argv[0])
print (sys.argv[1])
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」を呼び出す

import argparse
2

まず、モジュールを呼び出すところから始めます。「import argparse」と記述すると、モジュールが呼び出せます。

②パーサーの作成

import argparse
2  parser = argparse.ArgumentParser( )

モジュールを呼び出した後に行うのが、パーサーの作成です。
パーサーは「parser = argparse.ArgumentParser ()」と記述すると作成できます。

③コマンドライン引数を設定する

import argparse
2  parser = argparse.ArgumentParser( )
3  parser.add_argument( )

次にコマンドライン引数の設定を行います。コマンドライン引数の設定は「parser.add_argument ()」と記述することで可能です。

④コマンドライン引数の解析

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」を呼び出す

import argparse
2

モジュールの呼び出し方については先ほど説明した通りです。「argparse」でコマンドライン引数を取得する場合には必要になるので、覚えておきましょう。

②パーサーの作成

imoprt argparse
2  parser = argparse.ArgumentParser(descriotion=‘テストコードです’)
3  parser.add_argument( )
4  args = parser.parse_args( )

次に行うのがパーサーの作成でしたね。基本的には先ほど説明した方法で大丈夫ですが、ここで引数を設定できます。引数を設定すると、プログラムを実行した際に情報を表示できます。

よく使われる引数は次の通りです。

prog:プログラムの名称
usage:プログラムの利用方法の説明
description:プログラムの説明

今回のサンプルコードでは、プログラムの説明する引数「description」を記述します。

③コマンドライン引数を設定する

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」を記述します。

④コマンドライン引数の解析

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」を付け加えると、次のようになります。

import argparse
2  parser = argparse.ArgumentParser(descriotion=‘テストコードです’)
3  parser.add_argument(‘arg1’)
4  parser.add_argument(‘arg2’ help=‘aaaaaa’)
5  args = parser.parse_args( )
print(‘arg1=’+args.arg1)
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を実行する上でよく使われるので、コマンドラインの学習でつまずいている方は参考にしてみてくださいね。

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。