2009-11-28 4 views
1

동일한 서버에 연결하고 관련 있지만 다른 일을하는 일련의 명령 행 도구에 대해 작업하고 있습니다. 사용자가 모든 도구에서 공유 할 수있는 연결 정보와 같은 일반적인 인수를 배치 할 수있는 단일 구성 파일을 가질 수 있기를 바랍니다. 서버 주소가 명령에 지정되지 않은 경우 서버 주소가이를 사용하고 다른 값을 파이썬에서 선택적 인수 처리 (가능)

  • 을 무시 명령 줄에 지정된 경우

    1. : 이상적으로, 나는 나를 위해 다음을 수행 뭔가를하고 싶습니다 명령 줄에서 지정한 구성 파일에있는이 주소를 사용하십시오. 다른 값은 무시하십시오.
    2. 서버 주소가 명령 줄에 지정되지 않았거나 명령에 지정된 구성 파일이지만 사용자 홈 디렉터리의 구성 파일 (예 : .myapprc)에서 사용할 수있는 경우이 값을 사용하십시오.
    3. 위 주소 중 하나에서 서버 주소를 지정하지 않은 경우 오류 메시지가 나타납니다.

    나는이에 본 적이 가장 가까운 내가 말할 수있는 것은 또한 설정 파일 볼 것이다 옵션 파서을 제공에서 configparse 모듈이지만, 지정해야합니다 "의 개념을 가지고하지 않는 것 어딘가에 "필요합니다.

    누구든지 위의 사례를 다룰 수있는 기존 모듈을 알고 있습니까? 그렇지 않다면 optparse, configparse 또는 내가 검토하지 않은 다른 모듈에 대한 간단한 확장도 크게 감사 할 것입니다.

  • +0

    어떤 유형의 구성 파일을 사용 하시겠습니까?널리 사용되는 두 가지 형식은 확장 XML 및 INI가있는 파일입니다. –

    답변

    1

    이 당사자 모듈 configparse은 표준 파이썬 라이브러리에서 optparse까지 확장하기 위해 작성되었습니다. optparse 문서에서 언급 한 것처럼 "optparse가 필요한 옵션을 구현하지 못하도록하지는 않지만 optparse를 사용하면 많은 도움을 줄 수는 없습니다"(그러나이를 수행하는 방법을 보여주는 몇 가지 URL이 나와 있지만) . 가장 간단한 방법은 default value 기능을 사용하는 것입니다. 실제로는 합법적 인 값이 아닌 기본값을 지정하십시오 (서버의 주소와 같이 매우 쉽습니다). 그런 다음 옵션이 처리되면 지정된 값이 합법적인지 확인하십시오. 어쨌든 좋은 생각입니다 -), 그렇지 않으면 적절한 예외를 발생시킵니다.

    0

    저는 SafeConfigParser과 함께 opster의 미들웨어 기능을 사용하여 비슷한 효과를 얻을 수 있습니다. 자신이 설명한 특정 논리를 구현해야하지만 상대적으로 어려움을 덜 수 있습니다. opster의 미들웨어 사용 예로는 test/test.py 예제가 있습니다.

    0

    dict를 사용하여 프로그램에 옵션을 저장하십시오.

    먼저 사용자의 디렉토리에서 옵션 파일을 구문 분석하고 dict (configparse 또는 다른 모듈을 사용해도 좋습니다)의 모든 옵션을 저장하십시오. 그런 다음 명령 줄을 구문 분석하고 (optparse가 적합 할 수있는 모든 모듈 사용) 인수가 구성 파일을 지정하고 dict에서 지정된 파일을 구문 분석하고 읽은 것으로 옵션을 업데이트하면 (dict.update은 2 개의 dict). 다른 모든 인수를 다른 dict에 저장하고 다시 병합하십시오 (dict.update 다시 ...).

    이렇게하면 옵션을 저장하는 명령에 사용자가 지정한 파일에서 읽거나 명령 줄에서 직접 가져온 값을 포함 할 수 있습니다. 필수 값을 포함하지 않으면 오류와 함께 종료하십시오.