Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 명령줄 인수를 추가하는 방법은 무엇입니까?

<시간/>

소개..

Python에는 명령줄 인수를 구문 분석하는 기능을 제공하는 매우 강력한 argparse 모듈이 있습니다. 많은 상호 작용 없이 OS 명령줄에서 사용자 입력을 얻으려면 명령줄에서 매개변수를 허용하는 프로그램을 코딩하십시오. 파싱할 URL을 제공하거나 S3 버킷에 업로드할 파일을 수락하면 최소한의 노력으로 argparse를 사용할 수 있습니다.

기본 사용법

  • 코드가 수락할 인수를 정의합니다.

  • 인수 파서를 호출하여 결과 개체를 반환합니다.

  • 인수를 사용하십시오.

간단히 말해서 인수 파서의 구조는 다음과 같습니다.

def main( parameters):
<< Logic here >>

if __name__ == '__main__':
<< 1. Define argument parser >>
<< 2. Parse the arguements >>
<< 3. Validation >>
<< 4. call main (parameters) >>

main 함수는 코드의 진입점이 무엇인지 알고 있습니다. __name__ =='__main__' 섹션은 코드가 직접 호출되는 경우에만 실행됩니다.

  • 하나의 인수(테니스 선수를 문자열로)만 받아들이는 프로그램을 만드십시오.

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(
description='Example for Two positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')

return parser.parse_args()

# define main
def main(player):
print(f" *** The {player} had won 20 grandslam titles.")

if __name__ == '__main__':
args = get_args()
main(args.player)

a) 이제 매개변수를 전달하지 않고 명령줄에서 이 프로그램을 실행할 때, 즉 아무 것도 주어지지 않으면 프로그램을 호출하는 적절한 방법에 대한 간단한 사용법 설명이 인쇄됩니다.

In [3]: run <>.ipynb
usage: ipython [-h] player
ipython: error: the following arguments are required: player
An exception has occurred, use %tb to see the full traceback.

b) 하나 이상의 인수를 제공하면 다시 불평합니다. 프로그램은 정의되지 않은 두 번째 인수를 가져오는 것에 대해 불평합니다.

c) 프로그램에 정확히 하나의 인수를 제공할 때만 실행됩니다.

2. 두 개의 인수만 받아들이는 프로그램을 만드십시오. 테니스 선수는 문자열로, 그랜드 슬램트 타이틀은 정수로 이긴 선수입니다.

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(
description='Example for Two positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')

# Adding our second argument player titles of type integer/number.
parser.add_argument('titles',
metavar='titles',
type=int,
help='Tennis Player Grandslam Titles')

return parser.parse_args()

# define main
def main(player, titles):
print(f" *** The {player} had won {titles} grandslam titles.")

if __name__ == '__main__':
args = get_args()
main(args.player, args.titles)

이제 터미널을 열고 프로그램을 실행하십시오. 인수가 전달되지 않으면 스크립트는 명확한 메시지와 함께 오류를 반환합니다.

출력

<<< python test.py
usage: test.py [-h] player titles
test.py: error: the following arguments are required: player, titles

<<< python test.py federer 20
*** The federer had won 20 grandslam titles.