python

【python】引数を取得する方法【→プログラム初心者向け】

11月 20, 2019

how to get parameter on python
プログラム女子
使う人が直接入力するような情報をプラグラムに入力するにはどうしたらいいのかな...
もし、入力するその時まで分からない情報や、ユーザーしか知らない情報をpythonプログラムに渡すには、「コマンドライン引数」というのが使えるよ。今回はこのコマンドライン引数の使い方を説明するね。
Tommy

この記事で分かること

  • pythonファイル実行時のオプション(引数)とは何かが分かる
  • オプション(引数)のpythonファイル内での処理方法が分かる

Pythonで引数を取得する方法の概要

summary of getting parameter

この記事では、pythonプログラムをコマンドラインから実行した場合に、コマンドライン引数の値をpythonファイル内部のプログラムに反映する方法を説明します。

pythonファイルを実行する時に、同時に引数(パラメータ)を渡し、内部の処理で、渡されたパラメータを使うといった処理ができるようになります。これによって、pythonで予めプログラムできないものを処理することができます。

例えば、下記のように、pythonファイル「test.py」を実行する時、第1引数に「Tommy」という文字列を、第2引数に「hoge」という文字列を入力することができます。

$ python test.py Tommy hoge

或いは、pythonファイルを実行するユーザーが複数人数居る場合に、ユーザーごとのユーザー名やパスワードは、ユーザーによって変わります。pythonファイル実行時にどのユーザーがpythonファイルを実行しているかが分かるので、pythonプログラム処理内部でユーザー名やパスワードを使った処理ができるようになります。

Pythonで引数を取得する方法の前提の環境

environment of getting parameter

Pythonで引数を使った実行方法の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

オススメ
how to programming on rental server
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】

続きを見る

Pythonで引数を取得する方法のサンプルプログラム

sample program of getting parameter

ライブラリインポート

ここでは、pythonファイル実行時に指定された引数の値を取得する為に、sysライブラリをインポートしています。

import sys

「sys」ライブラリをインポートする

引数入力を取得する関数の定義

今回のサンプルプログラムは、pythonファイルの実行時にユーザーのユーザー名を第一引数に、パスワードを第二引数に指定されることを期待したものにします。

「sys」ライブラリの「argv」と呼ばれる関数で引数全体(ここでは変数「args」と定義している)を取得し、その引数全体はリストで渡される為、変数「args」の2番目の要素をユーザー名として取得、3番目の要素をパスワードとして取得します。また、変数「args」の1番目にはpythonのファイル名が入っています。

def get_input_param():

	user = ''
	passwd = ''
	result = False

	# 引数の取得
	args = sys.argv

	# 引数の個数が足りない場合
	if 2 >= len(args):
		result = False

	else:
		result = True
		user = args[1]
		passwd = args[2]

	return user,passwd,result

  1. 関数「get_input_param」を定義宣言する。
  2. 変数「user」を空文字で初期化する。
  3. 変数「passwd」を空文字で初期化する。
  4. 変数「result」を値「False」で初期化する。
  5. 変数「args」を 関数「sys.argv」からの戻り値で初期化する。
  6. リストの要素数が2より小さい場合、次の処理を実施する。
    1. 変数「result」に値「False」を格納する。
  7. リストの要素数が2より小さい以外の場合、次の処理を実施する。
    1. 変数「result」に値「True」を格納する。
    2. 変数「user」に変数「args」の1番目の要素を格納する。
    3. 変数「passwd」に変数「args」の2番目の要素を格納する。
  8. 「user」「passwd」「result」の3つの値を戻り値として返却する。

定義した関数の実行

ここでは、先程定義した関数の実行処理を説明します。まず、引数で指定された値をを取得する関数「get_input_param」を呼び出します。関数「get_input_param」の結果が値「False」だった場合は、入力が異常である旨のメッセージを表示し、入力が正常であれば、ユーザー名とパスワードを表示するというプログラムです。

if __name__ == '__main__':

	username, password, result = get_input_param()

	if False == result:
		print("Incorrect input.")

	else:
		print("User Name: " + username)
		print("User Pswd: " + password)

  1. 変数「username」「password」「result」を関数「get_input_param」からの戻り値で初期化する。
  2. 変数「result」が値「False」だった場合、次の処理を実施する。
    1. 文字列「Incorrect input.」を表示する。
  3. 変数「result」が値「False」以外だった場合、次の処理を実施する。
    1. 文字列「User Name: 」と変数「username」の内容を表示する。
    2. 文字列「User Pswd:」と変数「password」の内容を表示する。

$ python test.py Tommy hoge
User Name: Tommy
User Pswd: hoge

実行の結果【エラー処理】

下の結果は、引数なしでpythonファイル「test.py」を実行した際の結果を表しています。引数が2つ未満だとエラー処理(入力が間違っているメッセージを表示)にしているので、エラー処理されていることが分かります。

$ python test.py
Incorrect input.

-python
-

© 2021 Tommy's blog Powered by AFFINGER5