8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonのargparseの中身を自動で取得して可視化する

Last updated at Posted at 2018-01-13

(19/9/6 追記)
vars()を利用すると、もっとスッキリ記述できるとアドバイスいただきました。詳細はコメントを見てください。

Pythonを実行するときにコマンドラインオプションを使っていろいろしたい時はargparseを使っている。しかし、argparseで生成されたオブジェクトに入っている値を確認する用のオレオレprint文を毎回作成するのは面倒である。
そこで、自動でargparseの中身を取得して表示するargsPrintを作成した。parse_args()で生成したオブジェクトをとりあえずargsPrintに突っ込むだけで勝手に表示してくれる。
(追記)使用例としては、argsPrintをfunc.pyなど適当なファイルに記述し、使用したいプログラム(main.pyなど)と同じ階層に置いたりして使用する。

動作環境

  • Ubuntu 16.04
  • Python 3.5.2

実装例

func.py
def argsPrint(p, bar=30):
    """
    argparseの parse_args() で生成されたオブジェクトを入力すると、
    integersとaccumulateを自動で取得して表示する
    [in] p: parse_args()で生成されたオブジェクト
    [in] bar: 区切りのハイフンの数
    """

    print('-' * bar)
    args = [(i, getattr(p, i)) for i in dir(p) if not '_' in i[0]]
    for i, j in args:
        if isinstance(j, list):
            print('{0}[{1}]:'.format(i, len(j)))
            [print('\t{}'.format(k)) for k in j]
        else:
            print('{0}:\t{1}'.format(i, j))

    print('-' * bar)

例えばargparseを以下のように設定してargsPrintを使用してみる。

main.py
help = '画像を読み込んでデータセットを作成する'
import argparse
from func import argsPrint

def command():
    parser = argparse.ArgumentParser(description=help)
    parser.add_argument('jpeg', nargs='+',
                        help='使用する画像のパス')
    parser.add_argument('--img_size', '-s', type=int, default=32,
                        help='生成される画像サイズ(default: 32 pixel)')
    parser.add_argument('--train_per_all', '-t', type=float, default=0.85,
                        help='画像数に対する学習用画像の割合(default: 0.85)')
    return parser.parse_args()

if __name__ == '__main__':
    args = command()
    argsPrint(args)

使用例

$ ./main.py FontData/font_0[0-2]*
------------------------------
img_size:	32
jpeg[3]:
	FontData/font_00.bmp
	FontData/font_01.bmp
	FontData/font_02.bmp
train_per_all:	0.85
------------------------------

以上。

8
3
6

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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?