Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでコマンドライン引数を追加するにはどうすればよいですか?


はじめに..

Pythonには、コマンドライン引数を解析するための関数を提供する非常に強力なargparseモジュールがあります。多くの対話なしでOSコマンドラインからユーザー入力を取得したい場合、またはコマンドラインからパラメーターを受け入れるプログラムをコーディングしたい場合。解析するURLを指定するか、ファイルを受け入れてS3バケットにアップロードすると、最小限の労力でargparseを使用できます。

基本的な使用法

  • コードが受け入れる引数を定義します。

  • 引数パーサーを呼び出して、結果オブジェクトを返します。

  • 引数を使用します。

つまり、引数パーサーの構造は次のようになります。

def main( parameters):
<< Logic here >>

if __name__ == '__main__':
<< 1. Define argument parser >>
<< 2. Parse the arguements >>
<< 3. Validation >>
<< 4. call main (parameters) >>

main関数は、コードのエントリポイントが何であるかを認識しています。 __name__ =='__main__'セクションは、コードが直接呼び出された場合にのみ実行されます。

  • テニス選手を文字列として1つの引数のみを受け入れるプログラムを作成します。

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(
description='Example for Two positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')

return parser.parse_args()

# define main
def main(player):
print(f" *** The {player} had won 20 grandslam titles.")

if __name__ == '__main__':
args = get_args()
main(args.player)

a)パラメータを渡さずにコマンドラインからこのプログラムを実行すると、つまり何も指定されていない場合、プログラムを呼び出す適切な方法に関する簡単な使用法ステートメントが出力されます。

In [3]: run <>.ipynb
usage: ipython [-h] player
ipython: error: the following arguments are required: player
An exception has occurred, use %tb to see the full traceback.

b)複数の引数を指定すると、再度文句を言います。プログラムは、定義されていない2番目の引数を取得することについて文句を言います。

c)プログラムに引数を1つだけ指定した場合にのみ、実行されます

2.2つの引数のみを受け入れるプログラムを作成します。テニスプレーヤーはストリングとして、グランドスラムタイトルはプレーヤーが整数として獲得します。

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(
description='Example for Two positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')

# Adding our second argument player titles of type integer/number.
parser.add_argument('titles',
metavar='titles',
type=int,
help='Tennis Player Grandslam Titles')

return parser.parse_args()

# define main
def main(player, titles):
print(f" *** The {player} had won {titles} grandslam titles.")

if __name__ == '__main__':
args = get_args()
main(args.player, args.titles)

次に、ターミナルを開いてプログラムを実行します。引数が渡されない場合、スクリプトは明確なメッセージとともにエラーを返します。

出力

<<< python test.py
usage: test.py [-h] player titles
test.py: error: the following arguments are required: player, titles

<<< python test.py federer 20
*** The federer had won 20 grandslam titles.

  1. Windowsターミナルでカスタムコマンドラインを追加する方法

    同社はWindowsターミナルを使用して、すべてのコマンドラインベースのユーティリティを1つのUWPシェルにまとめようとしています。箱から出して、Windows PowerShellとWindowsコマンドプロンプトが含​​まれていますが、必要に応じて、別のコマンドラインツールを含めることもできます。これには、Git Bash、WSLコマンドライン、Anacondaコマンドラインなどが含まれます。 Windowsターミナルにカスタムコマンドラインを追加する Windows Terminalにカスタムコマンドラインを追加するには、WindowsTerminal用のJSONファイルを手動で

  2. Pythonにパスを追加する方法は?

    Pythonは、1991年に最初にリリースされたプログラミング言語です。複数のオペレーティングシステムで使用できるアプリケーションがあり、開発者はその上で新しいコードを記述および開発できます。 Pythonは、開発者と広範なサポートに伴う可能性が非常に大きいため、最も広く使用されているプログラミング言語の1つです。 ユーザーが「python」という単語を入力するたびに 」コマンドプロンプトでエラーが返されます。正しく機能するには、パス全体を指定する必要があります。これは、コマンドプロンプトが出力をロードするために「python.exe」を見つける必要があり、パス全体が指定されていない限り、