Python의 명령줄 인수
운영 체제의 명령줄 셸에서 프로그램 이름 뒤에 제공되는 인수는 다음과 같습니다. 명령줄 인수 . Python은 이러한 유형의 인수를 처리하는 다양한 방법을 제공합니다. 가장 일반적인 세 가지는 다음과 같습니다.
sys.argv 사용
sys 모듈은 Python 런타임 환경의 다양한 부분을 조작하는 데 사용되는 함수와 변수를 제공합니다. 이 모듈은 인터프리터가 사용하거나 유지 관리하는 일부 변수와 인터프리터와 강력하게 상호 작용하는 함수에 대한 액세스를 제공합니다.
그러한 변수 중 하나는 간단한 목록 구조인 sys.argv입니다. 주요 목적은 다음과 같습니다.
- 명령줄 인수 목록입니다.
- len(sys.argv)는 명령줄 인수의 수를 제공합니다.
- sys.argv[0]은 현재 Python 스크립트의 이름입니다.
예: 두 개의 숫자를 추가하는 Python 스크립트가 있고 숫자가 명령줄 인수로 전달된다고 가정해 보겠습니다.
파이썬3
# Python program to demonstrate> # command line arguments> import> sys> # total arguments> n> => len> (sys.argv)> print> (> 'Total arguments passed:'> , n)> # Arguments passed> print> (> '
Name of Python script:'> , sys.argv[> 0> ])> print> (> '
Arguments passed:'> , end> => ' '> )> for> i> in> range> (> 1> , n):> > print> (sys.argv[i], end> => ' '> )> > # Addition of numbers> Sum> => 0> # Using argparse module> for> i> in> range> (> 1> , n):> > Sum> +> => int> (sys.argv[i])> > print> (> '
Result:'> ,> Sum> )> |
산출:
getopt 모듈 사용
파이썬 getopt 모듈 C의 getopt() 함수와 유사합니다. sys 모듈과 달리 getopt 모듈은 매개변수 검증을 통해 입력 문자열 분리를 확장합니다. 값 할당을 포함하여 짧고 긴 옵션을 모두 허용합니다. 그러나 이 모듈은 입력 데이터를 올바르게 처리하기 위해 sys 모듈을 사용해야 합니다. getopt 모듈을 사용하려면 명령줄 인수 목록에서 첫 번째 요소를 제거해야 합니다.
통사론: getopt.getopt(인수, 옵션, [long_options])
매개변수:
인수: 전달할 인수 목록입니다.
옵션: 스크립트가 인식하려는 옵션 문자의 문자열입니다. 인수가 필요한 옵션 뒤에는 콜론(:)이 와야 합니다.
긴 옵션: 긴 옵션의 이름이 포함된 문자열 목록입니다. 인수가 필요한 옵션 뒤에는 등호(=)가 와야 합니다.
반환 유형: 두 요소로 구성된 값을 반환합니다. 첫 번째 요소는 (옵션, 값) 쌍의 목록입니다. 두 번째는 옵션 목록이 제거된 후 남은 프로그램 인수 목록입니다.
예:
파이썬3
# Python program to demonstrate> # command line arguments> import> getopt, sys> # Remove 1st argument from the> # list of command line arguments> argumentList> => sys.argv[> 1> :]> # Options> options> => 'hmo:'> # Long options> long_options> => [> 'Help'> ,> 'My_file'> ,> 'Output='> ]> try> :> > # Parsing argument> > arguments, values> => getopt.getopt(argumentList, options, long_options)> > > # checking each argument> > for> currentArgument, currentValue> in> arguments:> > if> currentArgument> in> (> '-h'> ,> '--Help'> ):> > print> (> 'Displaying Help'> )> > > elif> currentArgument> in> (> '-m'> ,> '--My_file'> ):> > print> (> 'Displaying file_name:'> , sys.argv[> 0> ])> > > elif> currentArgument> in> (> '-o'> ,> '--Output'> ):> > print> ((> 'Enabling special output mode (% s)'> )> %> (currentValue))> > except> getopt.error as err:> > # output error, and return with an error code> > print> (> str> (err))> |
산출:
argparse 모듈 사용
argparse 모듈을 사용하는 것은 위치 인수, 인수의 기본값, 도움말 메시지, 인수의 데이터 유형 지정 등과 같은 많은 옵션을 제공하므로 위의 두 옵션보다 더 나은 옵션입니다.
메모: 기본 선택적 인수로 긴 버전인 –help와 함께 -h가 포함됩니다.
예시 1: argparse 모듈의 기본 사용.
파이썬3
# Python program to demonstrate> # command line arguments> import> argparse> # Initialize parser> parser> => argparse.ArgumentParser()> parser.parse_args()> |
산출:
예시 2: 도움말 메시지에 설명을 추가합니다.
파이썬3
# Python program to demonstrate> # command line arguments> import> argparse> msg> => 'Adding description'> # Initialize parser> parser> => argparse.ArgumentParser(description> => msg)> parser.parse_args()> |
산출:
예시 3: 선택적 값 정의
파이썬3
# Python program to demonstrate> # command line arguments> import> argparse> # Initialize parser> parser> => argparse.ArgumentParser()> # Adding optional argument> parser.add_argument(> '-o'> ,> '--Output'> ,> help> => 'Show Output'> )> # Read arguments from command line> args> => parser.parse_args()> if> args.Output:> > print> (> 'Displaying Output as: % s'> %> args.Output)> |
산출: