일단 제가 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
찾아본 결과 결론적으로는 프로젝트에서 CLI를 불가피하게 개발해야 하는 경우가 있을 겁니다. 아래사진과 같이 말이죠.
위 처럼 CLI에서 Donkey Car라는 문구라던가 직관적으로 시스템적인 정보를 받아오기 위해서 이렇게 docopt라는 모듈을 많이 사용하는 것 같습니다.
뿐만 아니라 사용자가 입력한 명령을 쉽게 파싱하고 검증하여 개발자가 실수를 줄일 수 있다고 합니다.
그래서 저도 위와 같이 직관적으로 CLI를 개발해야 할 경우에 위 모듈을 끌어다 써야 겠습니다.
사용법에 대한 공식문서는 여기에 있습니다.
이 docopt뿐만 아니라 더 폭넓은 CLI어플리케이션을 개발할 경우에 아래에 있는 사이트를 참고해보세요. 더욱 다양한 모듈들의 소개와 사용법이 있습니다.
https://python-guide-kr.readthedocs.io/ko/latest/scenarios/cli.html#docopt
댓글