2011-08-18 8 views
3

저는 플러그인이 제공하는 모든 기능에 추가 기능을 제공하는 명령 줄 플러그인 기반 프로그램을 작성하고 있습니다.파이썬 및 임의의 명령 줄 옵션

예를 들어 이미지를 파싱하고 저장 한 간단한 스크립트를 작성했다고 가정 해 봅시다. 그런 다음 누군가가 플러그인을 작성하여 스크립트를 작성하여 이미지를 조작 할 수 있습니다.

플러그인이로드되고 사용자는 명령 줄에서 이름을 지정하여 플러그인에 액세스 할 수 있습니다.

스크립트가 사용자에게 추가 옵션을 제공하는 것은 흔한 일입니다. 몇 년 동안 20 개의 다른 플러그인이 작성되었다고 가정 해 보겠습니다.

이제 모든 작성자는 사용자가 옵션을 제공 할 수있게하려는 것이므로 주 엔진은 사용자의 옵션을 가져 와서 플러그인으로 전달하여 원하는대로 처리 할 수 ​​있도록해야합니다.

균일하게 유지하려면 특정 옵션이 유사한 작업을 수행해야한다는 데 동의 할 수 있습니다. "-o name"과 같이 출력 이름을 "name"으로 설정해야합니다. 그런 다음 주 엔진이 알지 못하는 자신의 옵션과 항목을 구현하려고합니다 (물론 플러그인이하는 일을 알지 않아야합니다)

사용하지 않는 getopt 모듈을 사용하고 있습니다. 정의되지 않은 옵션을 지정할 때마다 예외가 발생합니다. optparse와 argparse에 대해 들어 봤지만 예외를 던지는 코드없이 원하는 옵션을 사용자가 지정할 수 있는지 여부는 확실하지 않습니다.

어떻게하면 모든 명령 줄 옵션을 지정할 수 있습니까?

답변

6

argparse을 사용하면 부분적으로 parse_known_args 메서드로 인수 목록을 구문 분석하고 나머지 인수 목록과 함께 올바르게 구문 분석 된 내용을 반환 할 수 있습니다.

+0

argparse에 대한 문서를 살펴본 후이를 보았습니다. "때로는 스크립트가 명령 줄 인수 중 일부만 구문 분석하여 나머지 인수를 다른 스크립트 나 프로그램에 전달할 수도 있습니다."라고 말합니다. 권자 – MxyL

1

원하는 솔루션은 명령 줄 인수를 프로세스 파이프 라인의 일종으로 처리하는 것이 좋습니다. 어떤 옵션이 옵션의 일부가 될 수도 있습니다. 그것을 이해하지 않는 한, 또는 유효한 옵션이 될 수없는 하나를 발견하고는 구문 분석 인수를 중지, 그 일을 할 때까지

command <global options> sub_command <sub_options> new_sub_command <new_sub_options> 

각 명령은 sys.argv 오프 옵션을 이동합니다, 반환은에 제어 플러그인 - 발송자.

관련 문제