argparse 모듈?
parser = argparse.ArgumentParser()
parser.add_argument()
parse_args()
parser.add_argument() 예시
import argparse
def server(port):
print('server port: ', port)
def client(port):
print('client port: ', port)
if __name__ == '__main__':
choose = {'ser': server, 'cli': client}
# parser 생성
parser = argparse.ArgumentParser()
# parser.add_argument로 받아들일 인수 추가
# 필수 인수 'role'
# 인수를 지정하는 순서가 정해져 있음
# 아래 코드의 경우 명령행 첫 번째 인자에 role에 해당하는 인자를 입력해야함
# 지정한 내용 선택지 중 내에서 선택할 수 있게 지정
# choices=( [] , {} )
parser.add_argument('role', choices=choose)
# 옵션인수
# 실행시, 지정해도 지정하지 않아도 상관 없음
# 지정하는 순서도 자유(필수 인수와 다름)
# 앞의 옵션인수: 정식명칭
# 뒤의 옵션인수: 약칭
# 프로그램 내에서는 정식명칭만 사용 가능
# default 값 지정
# 옵션인수로 지정되지 않으면 None
# None이 아닌 다른 기본값을 설정하고 싶을 경우 사용
# 아래 코드는 -p가 지정되지 않은 경우, 1060이 됨
# 데이터 타입을 지정
# 기본적으로 str
# int, float으로 지정하고 싶을 경우
# type=int, type=float
# 아래 코드는 type=int
parser.add_argument('-p', metavar='PORT', type=int, default=1060)
# extra value
parser.add_argument("-d", "--decimal", dest="decimal", action="store")
# existence/nonexistence
# 아래 코드의 경우 플래그로 사용
# action='store_true'로 지정
# -f가 지정되면 True, -f가 지정되지 않으면 False
parser.add_argument("-f", "--fast", dest="fast", action="store_true")
# action='store_false'로 지정 시
# -f가 지정되면 False, -f가 지정되지 않으면 True
parser.add_argument("-s", "--slow", dest="slow", action="store_false")
# action="store"
# 추가 옵션을 받음
# 추가 옵션 값은 dest 인자로 지정한 변수에 저장
# 인수를 전달하지 않은 경우
# 인수 없이 명령행에 추가 옵션 값을 입력하면 저장됨
# 아래의 실행 결과에서 'hello'를 추가 옵션 값으로 전달 시
# 이 값이 parsing되어 dst라는 변수의 값으로 할당됨을 확인
parser.add_argument(dest="dst", action="store")
parser.add_argument("--qp", dest="qp", action="store")
# 앞의 옵션인수: 정식명칭
# 뒤의 옵션인수: 약칭
parser.add_argument("-c", "--configure", dest="configure", action="store")
# 인수 분석
args = parser.parse_args()
# function
function = choose[args.role]
function(args.p)
if args.decimal == '1':
print("decimal is 1")
if args.fast:
print("-f option is used")
if args.slow:
print('-s option is used')
print(args.dst)
print(args.qp)
print(args.configure)
실행 결과

참조