<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>引数 - プログラミングで遊ブログ</title>
	<atom:link href="https://lemon818.com/tag/%E5%BC%95%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://lemon818.com</link>
	<description>現役システムエンジニアが趣味でプログラミングする自由気ままなブログ</description>
	<lastBuildDate>Thu, 16 Jul 2020 14:53:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>	<item>
		<title>【Python】初心者向け！「argparse」でコマンドライン引数をわかりやすくしよう！</title>
		<link>https://lemon818.com/python-argparse/</link>
		
		<dc:creator><![CDATA[Take]]></dc:creator>
		<pubDate>Thu, 16 Jul 2020 13:20:27 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[argparse]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[コマンド ライン 引数]]></category>
		<category><![CDATA[引数]]></category>
		<guid isPermaLink="false">https://lemon818.com/?p=4871</guid>

					<description><![CDATA[どーもTakeです。 この記事では、Pythonで「argparse」をつかってコマンドライン引数をより分かりやすくする方法について簡単に解説します。 &#160; 「コマンドライン引数」とは、コマンドラインから Pyt…]]></description>
										<content:encoded><![CDATA[<p>どーもTakeです。</p>
<p>この記事では、Pythonで「argparse」をつかってコマンドライン引数をより分かりやすくする方法について簡単に解説します。</p>
<p>&nbsp;</p>
<p>「コマンドライン引数」とは、コマンドラインから<strong> Python ファイルを実行したときに指定する引数</strong>のことです。</p>
<p>例えば、Python の「test.py」を実行しようとします。</p>
<p>その場合、ファイル名の横に文字列を追加して実行することができます（下記でいう「123」です）。</p>
<p>この「123」がコマンドを実行する場合の引数（<strong>コマンドライン引数</strong>）です。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">python test.py 123</pre><p>
&nbsp;</p>
<p>これはソースコード内では下記のように「sys.argv」という変数で受け取ることが可能です。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">import sys

args = sys.argv
print(args)</pre><p>
&nbsp;</p>
<p>「<span style="color: #ff0000;"><strong>じゃあ、sys.argv でええやん！</strong></span>」ってなるかもしれませんが、</p>
<p>「argparse」を使えば、コマンドライン引数を必要とするソースコードに対して</p>
<p>実行時に<span style="color: #0000ff;"><strong>注釈をつけたり</strong></span>することができ、より<span style="color: #0000ff;"><strong>明示的にわかりやすくすることができます！</strong></span></p>
<p>&nbsp;</p>
<p>この記事では「argparse」についてよりわかりやすく説明します！</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">この記事でわかること！</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>「argparse」とは？具体例をつかって説明！</li>
<li>コマンドライン引数を数字指定にする！</li>
<li>独自のオプション引数を導入！</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h2>「argparse」とは</h2>
<p>「argsparse」とは Python 標準ライブラリのひとつで、</p>
<p><span style="color: #0000ff;"><strong>コマンドライン引数をよりわかりやすくするモジュール</strong></span>のことです。</p>
<p>&nbsp;</p>
<p>例えば、下記のような「argsparse」をつかったソースコード（test.py）があるとします。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">import argparse

parse = argparse.ArgumentParser()
parse.add_argument('args1', help='args1 : name')
parse.add_argument('args2', help='args2 : number')
args = parse.parse_args()
print('args1 = '+ args.args1)
print('args2 = '+ args.args2)</pre><p>
&nbsp;</p>
<p>上記は、「argsparse」モジュールをインポートさせ、「add_argument」メソッドで「args1」「args2」を指定します。</p>
<p>この「args1」「args2」がコマンドライン引数の格納先になります。</p>
<p>&nbsp;</p>
<p>この test.py を実行すると（引数なし）、下記のような実行結果が表示されます。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktop&gt;python test.py
usage: test.py [-h] args1 args2
test.py: error: the following arguments are required: args1, args2</pre><p>
&nbsp;</p>
<h3>「-h」を付けて実行！</h3>
<p>次に「-h」をつけて実行します（下記が実行結果）。</p>
<p>これは標準のオプションでこれをつけることで「<strong>実行する際にどういった引数が必要か？</strong>」説明してくれます。</p>
<p>&nbsp;</p>
<p>この内容は「add_argument」メソッドの「help=」で定義した内容が表示されていることがわかります。</p>
<p>これが<span style="color: #0000ff;"><strong>「argsparse」の良さ</strong></span>です。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktop&gt;python test.py -h
usage: test.py [-h] args1 args2

positional arguments:
  args1        args1 : name
  args2        args2 : number

optional arguments:
  -h, --help  show this help message and exit</pre><p>
&nbsp;</p>
<p>つまり「argsparse」は<strong>コマンドライン引数に注釈をつけ<span style="color: #0000ff;">よりわかりやすくしてくれるモジュール</span></strong>です！</p>
<p>&nbsp;</p>
<h2><strong>コマンドライン引数を数字指定にする！</strong></h2>
<p>コマンドライン引数は基本的に文字列になりますが、<span style="color: #0000ff;"><strong>数字のみを入力したい</strong></span>場合があると思います。</p>
<p>例えば「python test.py 10」のように数字だけを受け付けたい場合があると思います。</p>
<p>&nbsp;</p>
<p>その場合、「add_argument」メソッドに「<strong>type=int</strong>」と指定すればOKです！</p><pre class="crayon-plain-tag">import argparse

parse = argparse.ArgumentParser()
parse.add_argument('args1', help='args1 : name')
parse.add_argument('args2', help='args2 : number', type=int)
args = parse.parse_args()
print('args1 = '+ args.args1)
print('args2 = '+ str(args.args2))</pre><p>
&nbsp;</p>
<p>これによりコマンドライン引数に「文字列」を指定して実行するとエラー表示が出力されるようになります。</p>
<p>下記は「python test.py aa aaa」と指定して実行した場合の例です。</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktoppython test.py aa 10
args1 = aa
Traceback (most recent call last):
  File "test.py", line 8, in &lt;module&gt;
    print('args2 = '+ args.args2)
TypeError: can only concatenate str (not "int") to str</pre><p>
&nbsp;</p>
<h2>独自のオプション引数を導入！</h2>
<p>コマンドライン引数をよりよくしたいと思われている人で、</p>
<p>下記のように「オプションを付けたい！」と思われている人もいるのではないでしょうか？</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktop&gt;python test.py --test 2</pre><p>
&nbsp;</p>
<p>上記は「--test」という独自のオプションを設定した場合の実行例です。</p>
<p>これは「add_argument」メソッドで簡単に実装できます！</p><pre class="crayon-plain-tag">import argparse

parse = argparse.ArgumentParser()
parse.add_argument('args1', help='args1 : name')
parse.add_argument('args2', help='args2 : number')
parse.add_argument("--test", help="test option")
args = parse.parse_args()
print('args1 = '+ args.args1)
print('args2 = '+ args.args2)
if args.test:
   print("test option")</pre><p>
&nbsp;</p>
<p>上記のように「parse.add_argument("--test", help="test option")」と記述することで</p>
<p>「--test」という独自のオプションをつけることができます。</p>
<p>&nbsp;</p>
<p>そして「if args.test:」と条件式を追加することでコマンドラインに「--test」というオプションが存在する場合に</p>
<p>処理を実行させることができます。</p>
<p>&nbsp;</p>
<p>下記実行結果になります。</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktop&gt;python test.py aaa 10 --test 1
args1 = aaa
args2 = 10
test option</pre><p>
&nbsp;</p>
<p>ただし、「--test」のあとには必ず<span style="color: #ff0000;"><strong>何らかの文字列を追加する必要があります</strong></span>。</p>
<p>例えば「python test --test 123」のように「123」を追加する必要があります。</p>
<p>&nbsp;</p>
<h3>オプションの後の値が不要の場合</h3>
<p>オプションのあとの文字列を不要にしたい場合、</p>
<p>「add_argument」メソッド内で「action="store_true"」を追加すればOKです。</p><pre class="crayon-plain-tag">import argparse

parse = argparse.ArgumentParser()
parse.add_argument('args1', help='args1 : name')
parse.add_argument('args2', help='args2 : number')
parse.add_argument("--test", help="test option", action="store_true")
args = parse.parse_args()
print('args1 = '+ args.args1)
print('args2 = '+ args.args2)
if args.test:
   print("test option")</pre><p>
&nbsp;</p>
<p>「action="store_true"」を追加することでオプション後に文字列なしで実行できます。</p><pre class="crayon-plain-tag">C:\Users\ABC\Desktop&gt;python test.py aaa 10 --test
args1 = aaa
args2 = 10
test option</pre><p>
&nbsp;</p>
<h3>オプションを短くしたい場合</h3>
<p>オプションを短くすることもできます。</p>
<p>下記のように「parse.add_argument("-t","--test", help="test option")」とすることで</p>
<p>独自のオプション「--test」の短縮形「-t」とすることができます。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">import argparse

parse = argparse.ArgumentParser()
parse.add_argument('args1', help='args1 : name')
parse.add_argument('args2', help='args2 : number')
parse.add_argument("-t","--test", help="test option")
args = parse.parse_args()
print('args1 = '+ args.args1)
print('args2 = '+ args.args2)
if args.test:
   print("test option")</pre><p>
&nbsp;</p>
<p>この際、短縮形は<span style="color: #ff0000;"><strong>「-」（ハイフン）を１つにしてください！</strong></span></p>
<p>そうしないと正常に実行されません！</p>
<p>&nbsp;</p>
<h2>最後に</h2>
<p>いかがでしたでしょうか？</p>
<p>この記事では、「argparse」をつかってコマンドライン引数をより分かりやすくする方法を解説しました。</p>
<p>&nbsp;</p>
<p>プログラミングはさまざまなユーザが実行しますが、</p>
<p>どんな人でもわかりやすく使えるようにしてあげることが非常に重要です。</p>
<p>&nbsp;</p>
<p>そんなときに「argparse」をつかってコマンドライン引数をわかりやすく「<span style="color: #0000ff;"><strong>ユーザに優しいプログラム</strong></span>」を実現できます。</p>
<p>この記事を参考にコマンドライン引数を使いこなしよりよいプログラミング開発をしていただければ幸いです。</p>
<p>ではでは。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
