質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

746閲覧

pythonのargparseを使いたい。

kabatiro

総合スコア20

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/05 04:11

pythonのargparseを利用してコマンドライン引数を設定したい。

import argparse # パーサーを作る parser = argparse.ArgumentParser( prog='argparseTest.py', # プログラム名 usage='Demonstration of argparser', # プログラムの利用方法 description='description', # 引数のヘルプの前に表示 epilog='end', # 引数のヘルプの後で表示 add_help=True, # -h/–help オプションの追加 ) # 引数を解析する args = parser.parse_args()

上のコードにおいて、パーサーを作るところまではなんとなくわかるのですが、

args = parser.parse_args()

このコードの意味がわかりません。私は下のような読み方をしてしまったのですが、正しい読み方がわからないです。また、argsという変数にparser.parse_args()という関数を入れることで、解析したことになる理由もわからないです。

args = インポートするモジュール.関数()

以上の二点に関してお分かりになる方がいらっしゃいましたら、ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

クラスとその使い方について理解を深められるとよろしいかと。
Python クラス

ご提示されたソースの流れは以下の通りです。

import argparse
argparse.pyという外部ファイルを読み込み、
argparse.ArgumentParser()
そのファイルに定義されているArgumentParserクラスインスタンスを生成します。
その結果生成されたインスタンスをparser変数に格納し、
parser.parse_args()
ArgumentParserクラスのparse_argsメソッドを呼び出している
*これ以降はparse_argsの仕様です
その中で、parse_argsを引数なしで呼び出しているので、
内部で勝手に_sysから起動時に指定した引数を参照して解析するという流れです。

そして、その結果をargs変数に格納

投稿2018/10/05 04:50

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kabatiro

2018/10/05 05:05

言葉を交えての解説とてもわかりやすいです!ありがとうございます!!一つ質問したいのですが、 _sysとはどのようなものなのでしょうか。(ググってもわかりませんでした涙) 結果が格納されたargs変数はどうなるのでしょうか。(変数の名前をargsから変えてもうまく処理されたので、内部でargs変数がどのように処理されているのか気になりました。) もしよければご教授願います。
t_obara

2018/10/05 05:23

argparse.pyでは、import sys as _sysと読み替えているので、そのように参照しているだけで、sysと同じですね。 何れにしてもドキュメントをご覧ください。詳細な動作について記載されています。 https://docs.python.jp/3/library/argparse.html 内部で云々については、重ねてになりますが、クラスについてを理解してください。
kabatiro

2018/10/05 05:30

大変恥ずかしながらドキュメントというものの存在を知りませんでした。大変勉強不足を痛感しております。稚拙な質問に付き合っていただいてありがとうございました。
guest

0

内容は以下のようになります。

# argparse モジュールの ArgumentParser クラスのコンストラクタに引数与えて # オブジェクトを作成する。 parser = argparse.ArgumentParser( prog='argparseTest.py', # プログラム名 usage='Demonstration of argparser', # プログラムの利用方法 description='description', # 引数のヘルプの前に表示 epilog='end', # 引数のヘルプの後で表示 add_help=True, # -h/–help オプションの追加 ) # ArgumentParser クラスの parse_args() メソッドを呼び出し、コマンドライン引数を解析する。 args = parser.parse_args()

print() すると、それがなんなのかわかると思います。

print(argparse.ArgumentParser) # <class 'argparse.ArgumentParser'> print(argparse.ArgumentParser.parse_args) # <function ArgumentParser.parse_args at 0x7f6460f410d0>

投稿2018/10/05 04:16

tiitoi

総合スコア21954

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kabatiro

2018/10/05 04:40

なるほどです!!print()を使ってその正体がわかるのですね!!この解決の仕方とても参考になります!とても素早く対応してくださってありがとうございます!!!!感謝感激です!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問