파이썬 2.7 문서에는 또 다른 명령 줄 파싱 모듈이 포함되어 있습니다. 또한에 getopt
와 optparse
우리가 지금 가지고있는 argparse
.
또 다른 명령 줄 구문 분석 모듈이 생성 된 이유는 무엇입니까? 왜 대신에 사용해야 optparse
합니까? 알아야 할 새로운 기능이 있습니까?
파이썬 2.7 문서에는 또 다른 명령 줄 파싱 모듈이 포함되어 있습니다. 또한에 getopt
와 optparse
우리가 지금 가지고있는 argparse
.
또 다른 명령 줄 구문 분석 모듈이 생성 된 이유는 무엇입니까? 왜 대신에 사용해야 optparse
합니까? 알아야 할 새로운 기능이 있습니까?
답변:
파이썬으로 2.7
, optparse
사용되지 않으며 희망 멀리 미래에 갈 것입니다.
argparse
원본 페이지 ( https://code.google.com/archive/p/argparse/ ) 에 나열된 모든 이유로 더 좋습니다 .
+
와/
자세한 정보는 PEP 389 에도 있으며 ,이 argparse
라이브러리는 표준 라이브러리로 만든 차량 입니다.
optparse
PEP에서 "순도"에 대한 언급은 나중에 그것이 바위만큼 유연하게 코딩 된 것처럼 들리도록 (듯이) 추가하기가 얼마나 복잡한 지에 대한 주장입니다.
optparse 대신 왜 사용해야합니까? 내가 알아야 할 새로운 기능은 무엇입니까?
@Nicholas의 대답은 이것을 잘 다루고 있지만, 당신이 시작하는 더 많은 "메타"질문은 아닙니다.
왜 또 다른 명령 줄 구문 분석 모듈이 만들어 졌습니까?
이는 유용한 모듈이 표준 라이브러리에 추가 될 때의 딜레마입니다. 동일한 종류의 기능을 제공하기 위해 실질적으로 더 우수하지만 이전 버전과 호환되지 않는 방법이 등장 할 때 무엇을합니까?
오래되고 인정할만한 방법을 사용하거나 (일반적으로 복잡한 패키지에 대해 이야기 할 때 : asyncore vs twisted, tkinter vs wx 또는 Qt 등) 동일한 작업을 수행하는 여러 가지 호환되지 않는 방법으로 끝납니다 (XML 파서, IMHO는 명령 줄 파서보다 더 좋은 예입니다.하지만 email
비슷한 문제를 처리하는 무수한 오래된 방법 과 패키지는 그리 멀지 않습니다.
문서에서 "더 이상 사용되지 않는"방법에 대해 협박 할 수도 있지만, 이전 버전과의 호환성을 유지해야하는 한, 중요한 응용 프로그램을 최신 Python 릴리스로 이동하지 않고 실제로 제거 할 수는 없습니다.
(질문과 직접 관련이없는 딜레마 2 번은 "표준 라이브러리는 좋은 패키지가 죽는 곳입니다."라는 말에 요약되어 있습니다 ... 매년 반 정도 릴리스되면별로 그렇지 않은 패키지, 그보다 더 자주 릴리스가 필요 하지 않은 매우 안정된 표준 라이브러리에서 실제로 "동결"되어 실제로는 어려움을 겪을 수 있지만 실제로는 다른 문제입니다).
parser.add_argument('--long-opt', '-l',...)
. '-'는 쉽게 처리 할 수 있지만 원하는대로 사용할 수 있습니다.
: 파이썬뿐만 아니라 이론적 근거에 대한 가장 좋은 소스는 PEP 것 PEP 389 : argparse - 새로운 명령 줄 구문 분석 모듈 , 특히, 단원, 왜 getopt에와 optparse의 충분하지?
블록에 새로운 아이들도 있습니다!
좀 더 깊이있는 비교를해야하는 경우 읽어 보시기 바랍니다 이 당신이 사용하게 할 수 있습니다 docopt을 하거나 클릭 . Kyle Purdon에게 감사합니다!
처음에는 @fmark만큼 optparse에서 argparse로 전환하는 것을 꺼려했습니다.
그런 다음이 문서를 보았습니다. argparse는 특히 의미있는 도움말 메시지 생성에 대해 이야기 할 때 optparse를 능가합니다 : http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html
그리고 @Nicholas의 " argparse vs. optparse "를 보았습니다. 파이썬 <2.7에서 argparse를 사용할 수 있다고 말합니다 (예전에는 몰랐습니다).
이제 내 두 가지 우려가 잘 해결되었습니다. 나는 비슷한 생각을 가진 다른 사람들을 도울 것이라고 기대했습니다.