1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

argparseの使い方 ささっと確認したい編

Posted at

この記事の対象

argparseの存在を知っているけど使ったことがない人。
python初心者の方

最近改めてまた勉強したので、まとめます。

argparseとは

argparseを使うと、pythonの実行の時にコマンドラインから引数を渡すことができるようになります。

# sample.pyの関数にファイル名を渡すとその名前でファイルを作っているようなイメージ
python sample.py --name sample.csv

みたいな感じで渡せます。

やろうと思えば

arg = input('filename->')
sample(arg)

# 実行結果
# filename ->  # ここにファイル名(sample.csv)を入れる

という感じでinputでもできますが、より充実した機能をargparseは提供してくれます。

使い方

今回は
・ディレクトリと期間(月)とファイル形式を渡すと該当のファイル名を列挙するようなプログラムを想定
・引数はディレクトリ(dir)、月(month)、ファイル形式(format)
・オプション引数として列挙する個数(l)を指定

例を先に出します。

import argparse

# パーサーの設定
parser = argparse.ArgumentParser(
        description='指定されたディレクトリから特定の月のファイルを検索するプログラム',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog='''
使用例:
  %(prog)s dir /path/to/directory month 3 format txt
  %(prog)s dir /path/to/directory month 3 format csv --l 5
''')

# 引数の指定
parser.add_argument('dir', help="対象ディレクトリ")
parser.add_argument('month', help="データ取り込み対象月")
parser.add_argument('format', help="ファイルフォーマット")
parser.add_argument('--l', type=int, help="表示する列数")

args = parser.parse_args()
 

順番に内容を見ていきます。

パーサーの設定

parser = argparse.ArgumentParser(
        description='指定されたディレクトリから特定の月のファイルを検索するプログラム',
        formatter_class=argparse.RawDescriptionHelpFormatter)
        epilog='''
使用例:
  %(prog)s dir /path/to/directory month 3 format txt
  %(prog)s dir /path/to/directory month 3 format csv --l 5
''')

引数について
description
プログラムの説明を記載します。あってもなくてもいいです。

formatter_class
ヘルプのフォーマットをカスタマイズできるようになります。
RawDescriptionHelpFormatterを定義するとdescriptionとepilogはすでに整形済みのものとして改行されないようになります。

epilog
プログラムの説明の追加を記載できます。
例えば上の例だと

usage: test.py [-h] [--l L] dir month format

指定されたディレクトリから特定の月のファイルを検索するプログラム

positional arguments:
  dir         対象ディレクトリ
  month       データ取り込み対象月
  format      ファイルフォーマット

options:
  -h, --help  show this help message and exit
  --l L       表示する列数

使用例:
  test.py dir /path/to/directory month 3 format txt
  test.py dir /path/to/directory month 3 format csv --l 5

という感じでヘルプを見られるんですが、使用例なんかはdescriptionに書いてpositional argumentsの前に書いてしまうよりは引数の後に書いたほうが見やすさの観点から良いです。

引数の指定

parser.add_argument('dir', help="対象ディレクトリ")
parser.add_argument('month', help="データ取り込み対象月")
parser.add_argument('format', help="ファイルフォーマット")
parser.add_argument('--l', type=int, help="表示する列数")

引数の指定は.add_argument('引数名'、help='説明')で行うことができます。
オプション引数は宣言の仕方が変わります。
オプション引数は実行の際に宣言しなくてもいい引数のことで、今回の例では列挙する個数(l)が該当します。
この時は引数の前に--をつけて指定をします。

また、typeを指定することができて、オプション変数--lでは引数をintで受け取るように設定しています。
逆にデフォルトでは文字列型なので気をつけましょう。

参考資料

argparse --- Parser for command-line options, arguments and subcommands¶

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?