yamlとdocoptを利用した引数指定 [Python]

個人的に,入出力をdocoptを記述し,コンフィグ情報はyamlを使って引数として取り込むのが好きなので,そのスクリプトについてメモしておく.decoptの記述では,空行を設けることが重要なので,必要以上に詰めて書かないこと.

"""
Overview: コーディング例を示すためのスクリプト.あるフォルダパスを指定すると,何らかの処理により,1つのファイルが出力される

Usage:
    ./act.py [options] -d DIR -o OFILE

Arguments:
    -d,--directory=DIR      ディレクトリ名の指定。*.txtファイル全てを入力対象とする
    -o,--output=OFILE       出力するファイル名を指定する (*.txt)
"""

import yaml
from docopt import docopt

if __name__ == "__main__":
  args = docopt(__doc__)
  src_folder = Path(args["--directory"])
  dst_folder = Path(args["--output"])

  with open("./config.yaml") as f:
        cfgs = yaml.safe_load(f)
  debug_flag = cfgs["debug"]
  splitter = cfgs["splitter"]
  sep = cfgs["sep"]

以下にconfig.yamlの内容を示す.

>> config.yaml
debug: False # デバッグするかどうか
splitter: nltk # splitの方法
sep: tab # 区切り文字の指定

パッケージはpipでインストール

pip install docopt
pip install pyyaml

Python

Posted by vastee