Pythonのコマンドラインの場合、あなたはとても唯一のプロを行う必要があります

苦難オン

それは学習の問題に来るとき、友達と話します。単語を聞いたとき、私は、知らない苦い人生を食べにしたくないので、私は学習の痛みに耐えました。苦い人生はただ食べることができる横たわって、私たちは苦いが食べるために自分自身を強制的に学ばなければなりません。子どもたちは最近、光はシャトルバスステーションは、数回のように眠った取るために身体があまりにも多く作るために2つまたは3毎日、あなたがブログを開始する前に、それについて学ぶために、学ぶために始める眠るために毎日仕事から帰ってきた、そして公共の数を作ったまで待って、ドライバが今私を知っています、最初は私の到着を呼び出します。傲慢な...痛みがあるの収穫であってもよいが、継続的な努力に依存するために何かをしたい...支払いする機会を持つことになり、必ずしもではないではありません!
昨日のことのPython文字列に関連する方法は、あまりにも多くのポイントが正直な断片的な知識、統計、分類、並べ替え、最後の1の説明時間の2時間以上かかったことを言って、要約されています。しかし、以前の知識の文字列全体の上に行くには悪くない...、旧見直し、満たされたリークを実施してきた
今日、そしてシーンは、文字列にすぎないが、詳細成功したか失敗したかということが、我々は、Pythonのコマンドライン引数について話します人々は、よりエレガントな方法を提供するために呼び出す見たとき、あなたは厳しポイントをしたいと思います。この時点で、名前のディープ反応!Shengtang ...

Pythonのコマンドライン引数

Pythonの開発では、我々は多くの場合の.pyファイルの実装に遭遇、あなたはコードのパラメータの引き渡しを小文字にする必要があります。
遭遇したパラメータは、パラメータを渡すための最も基本的な方法をシーンを渡し*.py argv1 argv2 ...、その後、我々はsya.argvコードによって解決上院に来ます。
このような使用は、これらのパラメータの十分なあなたがやっている知っている人...もっとハンサム、正式な、厳密ではない問題ありませんが、ありませんか?
> optprase - - > argprase実際には、sys.argvのはPythonベースのコマンドライン引数、getoptの三つのモジュールがあります。今日、我々は、コマンド・ライン・モジュールのピークargpraseでそれを言います!

5つのトリックを開始

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/6/25 23:58
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : 11.python_argparse_cookbook.py

# 导入模块
import argparse

# 实例化解析器对象
parser = argparse.ArgumentParser(description='python argparse cookbook')
# 添加参数
parser.add_argument('-v', '--version', help="get version")

# 获取参数集合
args = parser.parse_args()

# 打印参数值
print("User input code version is: {}".format(args.version))

ArgumentParserについて

ArgumentParserは、オプションのパラメータの数を提供する、パーサー・オブジェクトを作成するために使用されます。

Pythonオブジェクトへのコマンドライン文字列を解析するためのオブジェクト。
キーワード引数:

  • PROG - プログラムの名前(デフォルト:sys.argvの[0])

  • 使用方法 - 使用方法のメッセージ(デフォルト:引数から自動生成)

  • 説明 - プログラムが何をするのかについての説明

  • エピローグ - 引数記述以下のテキスト

  • 両親 - その引数がこの1にコピーする必要がありパーサ

  • formatter_class - 印刷のヘルプメッセージのHelpFormatterクラス

  • prefix_chars - オプションの引数の前に付ける文字

  • fromfile_prefix_chars -含むファイルの接頭辞文字
    追加の引数を

  • argument_default - すべての引数のデフォルト値

  • conflict_handler - 紛争を処理する方法を示す文字列

  • add_help - -h / -helpオプションを追加します。

  • allow_abbrev - 長いオプションが明確に略記することを許可

ここでの説明は、プログラムの記述を追加するために使用され、より多くの使用、あなたが理解できるように、他:

  • PROG - プログラムの名前(デフォルト:sys.argvの[0])

  • 用法 - 用法文字列プログラムを記述する(デフォルト:パラメータパーサから生成)

  • 説明 - ヘルプ情報の前にパラメータのテキスト(デフォルト:空)

  • エピローグ - ヘルプ情報の後にテキストパラメータ(デフォルト:空)

  • 両親 - オブジェクトのリストArgumentParser、これらのオブジェクトのパラメータが含まれなければなりません

  • formatter_class - カスタマイズされたヘルプクラス

  • prefix_chars - オプションのパラメータ(デフォルト:「 - 」)を設定し、プレフィックス文字

  • fromfile_prefix_chars - 読み取られるプレフィックス文字セットファイルの追加パラメータ(デフォルト:なし)

  • argument_default - パラメータのグローバルなデフォルト値(デフォルト:なし)

  • conflict_handler - オプションパラメータのコンフリクトを解決するための戦略(通常は必要)

  • add_help - パーサ-h / -helpオプション(デフォルト:true)に追加

エッセンス:add_argument

add_argumentモジュール全体のハイライトとして、我々は慎重に検討する必要があります。
次のフォーマットを実行します。
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

  • 名前またはフラグ - 文字列や、FOOまたは-f、--fooなどのオプションのリストの名前。

  • アクション - アクションコマンドラインパラメータ遭遇したとき、デフォルトはストアです。

  • NARGS - コマンドラインパラメータの数が読み取られる、特定の数、または値が省略可能のため、使用時のデフォルト位置引数に指定されていない番号、することができます - - - 引数使用のconst;?、またはアスタリスクは、0を表します以上のパラメータ、+記号または1つの以上のパラメータ。

  • const - アクションとNARGSは一定の値を必要としていました。

  • デフォルト - デフォルト引数なし。

  • タイプ - コマンドライン引数の型が変換されなければなりません。

  • 選択肢 - コンテナ許容パラメータ値。

  • 必須 - オプションパラメータは(唯一のオプションパラメータのために)省略することができるかどうか。

  • ヘルプ - ヘルプ・パラメータは、argparse.SUPPRESSとして指定されたとき、彼らは、このパラメータのヘルプ情報を表示していないと述べました。

  • metavar - パラメータ名の使用説明書、必須パラメータのデフォルトパラメータ名で、デフォルトのパラメータは、すべて大文字のパラメータ名はオプションです。

  • DEST -パラメータ解決名、選択されたオプションの最長の名前のためのデフォルトパラメータ、アンダースコアに変換さは強調した。
    add_argumentの位置パラメータおよびオプションのパラメータに分割されている基準を追加するために、どのように違いを?

アライメントパラメータ

例えば、我々はユーザー名を入力し、各プログラムを必要としなければならない、我々は書くことができます。

import argparse

parser = argparse.ArgumentParser(description='python argparse cookbook')

parser.add_argument('user', help="input username")
parser.add_argument('pwd', help="input password")
parser.add_argument('-v', '--version', help="get version")

args = parser.parse_args()

print(args.user)
if args.version:
    print(args.version)

だから私たちは次のように入力できます

  • a.pyのをQingfeng 123

  • a.pyのをQingfeng 123 -v 1.0

  • a.py -v 1.0をQingfeng 123

  • a.py 123 -v 1.0をQingfeng#(注)は、このこと

それ以外の問題は、入力パラメータのみに私を聞いていると、私の入力シーケンスを必要としない、最後の例となり、位置決めパラメータを使用することができますが、あなたのコードで最高のは、唯一の位置パラメータがあります。この場合、我々としても指定するオプションのパラメータを使用する場合があります** - U -p **、合理的な、より直感的になることはありませ?

オプションのパラメータ

オプションのパラメータは何ですか?add_argumentのダッシュまたは2を追加するには「 - 」パラメータの初めにはオプションです(あなたがパラメータprefix_chars ArgumentParserを変更することが退屈しているものとします)。例: ' - V'または'--version'。
これらの2つのオプションのパラメータは、支払われるべき同じ時間と-v --versionで存在する場合ということです。ユーザーは、パラメータを渡すためにどのような方法を使用できますが、我々はパラメータを取得する場合、のみ使用することができargs.version、対応する値を得るために。

アクション= 'store_trueと'

私たちは通常、最も簡単ななどの値を渡すことなく、コマンドラインパラメータ、いくつかのパラメータを使用しますls -l
その場合でも、システムがああ文句を言うでしょう。何をしますか?
parser.add_argument('-v', '--version', action='store_true', help="get version")
私たちは、あなたができる、アクションの割り当てstore_trueとする必要があります。

パラメータのデフォルト値

私たちはadd_argumentでパラメータを追加すると、parser.parse_argsは()に対応する初期化パラメータ、および割り当てになります。
デフォルトはNoneです。上記は、アクション=「store_trueとは」、デフォルトのパラメータがFalseであると述べました。
もちろん、私たちは、私たちが望む値にはデフォルトで、デフォルトなしに変更することはできません

パラメータの制限

こうした我々のコードのような、よりを使用するには、インストール、アンインストール、起動、停止、および他の機能のためのツールを提供します。私たちが動作することができます...ので
parser.add_argument('-t', '--type', choices=['install','uninstall','start','stop'])
、ユーザは内部コマンド-tで選択を記入することができ、または無効な選択のプロンプトが表示されます:パラメータエラー
別の例としては、我々はポートに関する情報をユーザーに提供するためのプログラムを必要とする、ポートは番号でなければなりません。ポートの使用するための番号である、我々は判断するが、これは再作成車輪に相当し、argparseタイプのオプションを提供するために、パラメータでisinstance(ポート、int)を取得することができ、ユーザーは必要がなく、直接パラメータ、キャリブレーションを入力することができますあなたはその後、二次裁き!デモ:
parser.add_argument('-p', '--port', type=int)
我々は-p ABCを入力すると、モジュールが要求されます:エラー:引数-p / -ポート:int型に無効な値:「ABC」

オプションのパラメータは必須となり

それは実際には非常に簡単です:
parser.add_argument('-u','--user',required=True,help="input username")
それはパラメータを入力する場合、プロンプトが表示されます。引数で必要とされている以下のとおりです。-u / -ユーザー

終わり

一部の人々は、セレンシリーズは宦官ではない、と言うかもしれないだけで、このシリーズの数が少なすぎる人が見ていると言うことができ、更新も...との時間間隔の
ことは、歓迎を助けている場合、ここで[OK]をクリックし、今日の内容記事や私のマイクロチャンネル公衆数は【清风Python】Pythonのようなより多くの人々と共有し、あなたに感謝。

出典:風のPythonの著者:王翔 

おすすめ

転載: blog.csdn.net/devcloud/article/details/94599353