>

단순한 python 명령 줄 응용 프로그램은 현재 확장 중입니다. 현재 몇 가지 명령 줄 인수를 지원합니다.

try:
    opts, args = getopt.getopt(sys.argv[1:], 'b:h',
                               ['battle=', 'help'])
except getopt.GetoptError:
    usage()
    raise
# Parse opts/args.
for opt, arg in opts:
    if opt in ('-h', '--help'):
        usage()
    elif opt in ('-b', '--battle'):
        battle = True

추가 명령 줄 인수의 LOTS를 추가해야합니다. 내가 구현할 방식으로, 사용자가 설정할 수있는 모든 플래그에 대해 "설정된"플래그를 추적해야합니다.

사용자가 -x 를 모두 사용하여 파서를 "단락"하려는 경우가 있습니다. , -y-z  파서에게 남아있는 모든 파싱 작업을 건너 뛰고 특정 기능을 실행하도록 지시합니다. 그러나 이것은 is x,y,z set 것입니다  각 옵션을 확인하십시오.

<올>
  • 특정 파싱 작업을 "단락"할 수 있도록하여 파싱을 단순화하는 "파이 토닉"방법이 있습니까?
  • opt와 arg를 정렬하여 특정 순서로 플래그/opt를 구문 분석 할 수 있습니까?
    • 답변 # 1

      getopt 를 사용하고 있습니다  어려운 요구 사항? 아마도 더 'pythonic'접근법은 argparse 를 사용하는 것입니다. 더 단순하고 더 높은 수준의 모듈입니다. 이 경우 argparser를 다음과 같이 정의 할 수 있습니다.

      parser = argparse.ArgumentParser()
      parser.add_argument("-x", ...)
      parser.add_argument("-y", ...)
      parser.add_argument("-z", ...)
      args = parser.parse_args()
      if args.x and args.y and args.z:
          short_circuit()
      
      

      두 번째 질문은 argparse 를 사용하는 것 같습니다.   args 에서 이름으로 각 arg를 호출하기 때문에 구문 분석 순서에 대해 걱정할 필요가 없습니다.  개체.

  • 이전 c# - reportviewer 및 데이터 세트 - 다른 pc에 설치하는 동안 오류가 발생했습니다
  • 다음 php - SQL 문을 MySQL에 저장하고 실행하십시오