라이브러리&Module/깃허브 라이브러리

CLI를 위한 간편하고 직관적인 도구, docopt에 대해 알아보자!

JackSmith 2024. 2. 9.

 

 

일단 제가 docopt에 대해 알아보게 된 계기는 동키카 프로젝트를 진행하면서 수집한 데이터를 기반으로 학습을 시키기 위해 train.py를 실행해야 되서 그 안에 뭐가 있나 들어가봤었는데 위에서 말한 docopt 모듈이 있었습니다.

from docopt import docopt
import donkeycar as dk
from donkeycar.pipeline.training import train


def main():
    args = docopt(__doc__)
    cfg = dk.load_config()
    tubs = args['--tubs']
    model = args['--model']
    model_type = args['--type']
    comment = args['--comment']
    train(cfg, tubs, model, model_type, comment)


if __name__ == "__main__":
    main()

나머지는 donkeycar프로젝트 기본위치에서 그 아래에 뿌리로 내려져 있는 것들이라 신경쓰지 않았는데, 한가지 신경쓰인 부분이 바로 이 부분이었습니다. 이 docopt가 어떻게 쓰이는지 알아보기 위해 공부해보았습니다.

일단 파이썬 기반의 docopt는 아래 깃허브 링크에 들어가면 코드가 나와 있습니다.

https://github.com/docopt/docopt

 

GitHub - docopt/docopt: Pythonic command line arguments parser, that will make you smile

Pythonic command line arguments parser, that will make you smile - GitHub - docopt/docopt: Pythonic command line arguments parser, that will make you smile

github.com

찾아본 결과 결론적으로는 프로젝트에서 CLI를 불가피하게 개발해야 하는 경우가 있을 겁니다. 아래사진과 같이 말이죠.

위 처럼 CLI에서 Donkey Car라는 문구라던가 직관적으로 시스템적인 정보를 받아오기 위해서 이렇게 docopt라는 모듈을 많이 사용하는 것 같습니다.

 

뿐만 아니라 사용자가 입력한 명령을 쉽게 파싱하고 검증하여 개발자가 실수를 줄일 수 있다고 합니다.

그래서 저도 위와 같이 직관적으로 CLI를 개발해야 할 경우에 위 모듈을 끌어다 써야 겠습니다.

 

사용법에 대한 공식문서는 여기에 있습니다.

http://docopt.org/

 

docopt—language for description of command-line interfaces

docopt Command-line interface description language docopt helps you: define the interface for your command-line app, and automatically generate a parser for it. docopt is based on conventions that have been used for decades in help messages and man pages f

docopt.org

이 docopt뿐만 아니라 더 폭넓은 CLI어플리케이션을 개발할 경우에 아래에 있는 사이트를 참고해보세요. 더욱 다양한 모듈들의 소개와 사용법이 있습니다.

https://python-guide-kr.readthedocs.io/ko/latest/scenarios/cli.html#docopt

 

Command-line Applications — The Hitchhiker's Guide to Python

 

docs.python-guide.org

 

 

댓글