Python의 명령줄 매개변수 구문 분석 도구인 docopt 사용에 대한 자세한 소개

高洛峰
풀어 주다: 2017-03-28 09:22:42
원래의
1873명이 탐색했습니다.

docopt는 명령줄 매개변수를 구문 분석하는 데 사용되는 도구입니다. Python 프로그램에 매개변수를 추가하려는 경우 더 이상 걱정할 필요가 없습니다. 다음 기사에서는 Python의 명령줄 매개변수 구문 분석 도구인 docopt의 관련 정보를 주로 소개합니다. 소개가 매우 자세합니다. 필요한 친구는 아래를 살펴보세요.

서문

docopt는 오픈 소스 라이브러리입니다. README에 자세히 소개되어 있고, 학습을 위한 예제도 많이 나와있어요. 이번 글도 README에 있는 내용을 번역해서...

docopt의 가장 큰 특징은, 명령줄을 어떻게 파싱할지 고민하지만 특정 규칙에 따라 원하는 형식을 작성하면 분석이 완료됩니다.

docopt 설치

docopt에는 다양한 버전이 있으며 각각 다른 언어를 지원합니다. docopts는 쉘 스크립트를 지원합니다(다음 예에서는 주로 docopts를 예로 사용합니다). 자세한 내용은 github의 docopt 지침

docopt 설치

mac os x를 참조하세요. 예를 들어 docopts를 설치하기 전에 먼저 docopt를 설치해야 합니다.

첫 번째 방법

pip로 직접 설치하는 방법이 있습니다.pip install docopt==0.6.2

일부 Mac에서는 직접 pip 명령을 지원하지 않을 수 있습니다.

방법 2

github에서 소스 코드를 다운로드할 수도 있습니다(docopt는 공개 버전입니다. 소스 프로젝트), python setup.py install Install

Docopts 설치

를 사용합니다. docopts를 설치하려면 위의 두 가지 방법을 사용하여 GitHub에서 소스 코드를 다운로드한 후 사용해야 합니다. python을 설치하려면 다운로드 주소는

docopt 구현에 대한 간단한 분석

Python에는 이런 속성이 있습니다__doc__, 그 값은 일반적으로 도움말 정보를 나타내는 문자열이며, docopt는 이 One 속성을 활용하여 도움말 정보를 명령줄 매개변수 구문 분석 지침으로 대체한 후 구문 분석합니다.

설명을 위해 docopt의 예를 들어보겠습니다.


"""Naval Fate.
Usage:
 naval_fate.py ship new <name>...
 naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
 naval_fate.py ship shoot <x> <y>
 naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting]
 naval_fate.py (-h | --help)
 naval_fate.py --version
Options:
 -h --help  Show this screen.
 --version  Show version.
 --speed=<kn> Speed in knots [default: 10].
 --moored  Moored (anchored) mine.
 --drifting Drifting mine.
"""
from docopt import docopt
if __name__ == &#39;__main__&#39;:
 arguments = docopt(__doc__, version=&#39;Naval Fate 2.0&#39;)
 print(arguments)
로그인 후 복사

위의 코드 조각에서 많은 도움말 정보는 다음과 같습니다. 명령줄 매개변수 구문 분석에 대한 지침입니다. 구문 분석을 위해 함수 항목에서 docopt 함수를 호출합니다. 반환된 인수 변수는 옵션 선택 여부, 매개 변수 값 및 기타 정보를 기록합니다. 프로그램이 명령줄에서 실행되면 인수 변수의 기록을 기반으로 사용자가 입력한 옵션과 매개변수 정보를 알 수 있습니다.

따라서 명령줄 매개변수 구문 분석 지침을 작성하는 방법이 중요합니다. 명령줄 구문 분석 정보는 사용 패턴 형식과 옵션 설명 형식이라는 두 부분으로 구성됩니다.

사용 패턴 형식(Usage Pattern format)

사용 패턴은 다음과 같이 Usage:로 시작하고 빈 줄로 끝납니다. 위의 코드 조각에서는 사용자가 명령줄 매개변수를 추가할 때의 형식, 즉 사용 시 형식을 주로 설명하고 있으며 구문 분석도 이 형식에 따라 수행됩니다.

각 사용 패턴에는 다음 요소가 포함됩니다.

* 매개변수

매개변수는 대문자로 표시하거나 꺾쇠 괄호 <>로 묶어야 합니다.

* 옵션

옵션은 대시 - 또는 -로 시작됩니다. 문자가 하나만 있는 경우 형식은 -o이고, 문자가 두 개 이상인 경우 --output입니다. 동시에 여러 개의 단일 문자 옵션을 결합할 수도 있습니다. -ovi는 -o, -v, -i와 같습니다. 옵션에는 매개변수도 있을 수 있습니다. 이때 옵션에 설명을 추가하는 것을 잊지 마세요.

다음은 사용 패턴에 사용되는 일부 식별자의 의미입니다. 이를 올바르게 사용하면 구문 분석 작업을 더 잘 완료할 수 있습니다.

* []

는 선택요소, 대괄호 안의 요소는 선택사항

* ()

은 필수요소, 괄호 안의 요소는 반드시 하나쯤 있어야 합니다. 여러 개 중 하나를 선택하세요.

* |

상호 배타적인 요소, 수직선 양쪽에 한 요소만 남길 수 있습니다

* ...

은 요소가 반복적으로 나타날 수 있으며 최종 구문 분석된 결과가 목록임을 의미합니다.

* [options]

특정 옵션 지정 특정 작업을 완료합니다.

옵션 설명 형식

옵션 설명도 필수입니다. 특히 옵션에 매개변수가 있고 기본값이 할당되어야 하는 경우에는 더욱 그렇습니다. .

옵션에 매개변수를 추가하는 데는 두 가지 형식이 있습니다.


-o FILE --output-FILE  # 不使用逗号,使用 = 符号
-i <file>, --input <file> # 使用逗号,不使用 = 符号
로그인 후 복사

옵션에 설명을 추가하고 옵션과 설명을 공백 두 개로 구분하세요.

옵션에 기본값을 추가할 때는 선택 설명 뒤에 추가하면 됩니다. 형식은 다음과 같습니다. [기본값: ]


--coefficient=K The K coefficient [default: 2.95]
--output=FILE Output file [default: test.txt]
--directory=DIR Some directory [default: ./]
로그인 후 복사

옵션이 반복될 수 있으면 해당 값 [default: ...]은 목록이 됩니다. 반복할 수 없는 경우 해당 값은 문자열이 됩니다.

을 사용하여 패턴 형식과 옵션 설명 형식의 사용법을 이해하고, 제시된 예시를 통해 더 잘 이해할 수 있습니다.

다음 단계는 입력 정보를 얻는 것입니다.

在前面提到arguments参数是一个字典类型,包含了用户输入的选项和参数信息,还是上面的代码段例子,假如我们从命令行运行的输入是


python3 test.py ship Guardian move 100 150 --speed=15
로그인 후 복사

那么打印arguments参数如下:


{&#39;--drifting&#39;: False,
 &#39;--help&#39;: False,
 &#39;--moored&#39;: False,
 &#39;--speed&#39;: &#39;15&#39;,
 &#39;--version&#39;: False,
 &#39;<name>&#39;: [&#39;Guardian&#39;],
 &#39;<x>&#39;: &#39;100&#39;,
 &#39;<y>&#39;: &#39;150&#39;,
 &#39;mine&#39;: False,
 &#39;move&#39;: True,
 &#39;new&#39;: False,
 &#39;remove&#39;: False,
 &#39;set&#39;: False,
 &#39;ship&#39;: True,
 &#39;shoot&#39;: False}
로그인 후 복사

从打印信息可以看到,对于选项,使用布尔型来表示用户是否输入了该选项,对于参数,则使用具体值来表述。

这样一来,程序就可以从arguments变量中得到下一步的操作了。若是用户什么参数都没输入,则打印Usage说明提示输入内容。

위 내용은 Python의 명령줄 매개변수 구문 분석 도구인 docopt 사용에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿