2012-12-10 1 views
4

이것은 argparse을 사용하는 방법이 아니라 프로그램에서 구문 분석 된 옵션을 사용하는 방법입니다.파이썬 프로그램에서 옵션을 확인하는 방법은 무엇입니까?

옵션을 확인/기능의 옵션에서 값을 사용하는 좋은 기술은 무엇입니까?

몇 가지 아이디어 :

  • 는 당신이 값을 사용하고 (아마도 하나 이상의 기능 레벨)
  • 를 통해 전달하려는 기능에 매개 변수를 추가 전역 변수 (모듈 변수)를 사용하여 때마다 뭔가 -clause if
  • 검사 (전역 변수?) 옵션에 따라 달라집니다
  • define a special function for some checks

내가 감독 약간의 기술이 있어야한다,이 프로그램의 다른 부분에 대해 여러 개의 파일이 특히 많이와 옵션이 많은 큰 프로그램에 적합하지 보인다.

답변

3

제 생각에는 인수 구문 분석은 응용 프로그램의 진입 점에서 수행되어야합니다. 라이브러리/모듈 로직은 불가 지론을 ​​유지하고 매개 변수로 초기화되어야합니다.

즉, 실행 가능한 응용 프로그램이 입력 파일에 대한 경로를 필요로하면 main() 진입 점에 argparse을 사용하여 --infile을 수락 할 수 있습니다. 그러나 라이브러리 함수 readfile은 argparse에 대한 지식이 없어야하며, 구성원 속성으로 infile을 수신하는 클래스의 일부이거나 매개 변수로 직접 수신해야합니다. 당신은 설정 파일을 사용하고 설정 파서 모듈이있는 경우

def readfile(infile): 
    # read(infile) 

또 다른 방법

class Reader(object): 
    def __init__(self, infile): 
     self.infile = infile 

    def readfile(self): 
     # read(self.infile) 

또는 ...입니다. 이것은 읽고 해석 할 수 있으며 전역 응용 프로그램 구성 옵션을 필요로하는 모든 모듈에서 사용할 수 있습니다. 이 방법의 한 예는 django has its settings module입니다. django 프로젝트 내의 모든 응용 프로그램은 설정을 가져오고 쿼리 할 수 ​​있습니다.

+0

그래서 모듈 변수가이 경우에 반드시 필요합니까? 그리고 예, 그 장고 링크는 많은 것들을 정리합니다. +1은 하드 링크가 처음부터 이러한 것들을 찾는 것입니다. 그 질문이 다른 사람들에게도 도움이되기를 바랍니다. – Profpatsch

+0

아마 "데이터 구조"모듈 일 것입니다. 매우 기본적인 수준 에서처럼,'conf.py'에 저장된 사전은 초기화시에 채워지고 다른 모듈에 의해 가져오고 읽을 수 있습니다. – jdi