일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트
- 네트워크보안
- 소프트웨어
- 웹개발
- 파이썬
- 프로그래밍
- 네트워크
- 보안
- I'm Sorry
- 인공지능
- 알고리즘
- 사이버보안
- 소프트웨어공학
- 2
- 클라우드컴퓨팅
- 컴퓨터비전
- 데이터과학
- 데이터분석
- 데이터베이스
- 컴퓨터과학
- 딥러닝
- 컴퓨터공학
- 머신러닝
- 자료구조
- Yes
- 데이터구조
- 빅데이터
- 코딩
- 버전관리
- 프로그래밍언어
- Today
- Total
스택큐힙리스트
Argparse: 필수 인수가 "선택적 인수"로 나열됨? 본문
다음 간단한 코드를 사용하여 인자를 파싱합니다. 그 중 하나는 필수인 것에 유의하세요. 사용자가 인자를 제공하지 않고 스크립트를 실행하면, 표시된 사용법/도움말 텍스트가 선택적이 아닌 인자가 있는지 나타내지 않아서 혼란스러워집니다. Python에서 인자가 선택적이 아님을 나타내는 방법은 무엇인가요?
여기 코드가 있습니다:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Foo')
parser.add_argument('-i','--input', help='Input file name', required=True)
parser.add_argument('-o','--output', help='Output file name', default=stdout)
args = parser.parse_args()
print (Input file: %s % args.input )
print (Output file: %s % args.output )
필요한 인자를 제공하지 않고 위의 코드를 실행하면 다음과 같은 출력이 나옵니다:
usage: foo.py [-h] -i INPUT [-o OUTPUT]
Foo
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Input file name
-o OUTPUT, --output OUTPUT
Output file name
답변 1
- 또는 -- 로 시작하는 매개변수는 일반적으로 선택적으로 간주됩니다. 다른 모든 매개변수는 위치 매개변수로, 디자인상 필수입니다(위치 기능 인수와 같은). 선택적 인수를 필수로 요구하는 것도 가능하지만, 이는 디자인에 조금 어긋납니다. 그러나 non-positional arguments의 일부이므로, 선택적이어도 optional arguments 헤더 아래에 표시됩니다. 사용 부분의 누락된 대괄호는 실제로 필요한 것임을 보여줍니다.
documentation 또한 참조하세요.
일반적으로, argparse 모듈은 -f 및 --bar와 같은 플래그가 항상 명령 줄에서 생략할 수 있는 선택적 인수를 나타낸다고 가정합니다.
주의: 선택적이어야 할 옵션들이 필수로 나타나는 것은 일반적으로 사용자들이 선택을 기대하는 옵션들을 선택해야 하기 때문에 가능한 경우 피하는 것이 좋습니다.
그렇다고 해도, 도움말에서 나타나는 위치 인수 및 선택적 인수 헤더는 인수가 자동으로 분리되는 두 개의 인수 그룹에서 생성됩니다. 이제 선택적인 것들의 이름을 변경하여 해킹할 수 있지만, 더 우아한 해결책은 필수 이름 지정 인수를 위한 다른 그룹을 생성하는 것입니다(또는 그들을 불러내는 것을 원하는대로).
parser = argparse.ArgumentParser(description='Foo')
parser.add_argument('-o', '--output', help='Output file name', default='stdout')
requiredNamed = parser.add_argument_group('required named arguments')
requiredNamed.add_argument('-i', '--input', help='Input file name', required=True)
parser.parse_args(['-h'])
usage: [-h] [-o OUTPUT] -i INPUT
Foo
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
Output file name
required named arguments:
-i INPUT, --input INPUT
Input file name
답변 2
Argparse: 선택적 인수에 필수 인수가 나와 있을까요?Argparse는 Python에서 명령 줄 인터페이스를 만드는 데 사용되는 모듈입니다. 이 모듈은 사용자가 명령줄에서 입력한 인수를 파싱하여 사용하기 쉬운 형태로 변환합니다. 그러나 argparse를 사용하는 중에 하나의 이슈가 있습니다. 바로 선택적 인수에 필수 인수가 나와 있을까?입니다.
기본적으로 argparse에서는 선택적 인수와 필수 인수가 서로 다른 부분에 위치합니다. 이렇게 함으로써 사용자가 필수 인수를 입력하지 않으면 프로그램이 쉽게 중단됩니다. 그러나 몇몇 사용자가 선택적 인수와 필수 인수를 함께 사용하고 싶다고 생각할 수 있습니다. 그렇게 하면 프로그램이 예외를 발생시키지 않고 심지어는 잘못된 결과를 출력할 수 있습니다.
하지만 이 문제를 해결하기 위해 argparse는 선택적 인수 그룹에 필수 인수를 추가하는 방법을 제공합니다. 이를 통해 사용자는 선택적 인수와 필수 인수를 함께 사용할 수 있습니다. 필수 인수를 선택적 인수 그룹에 추가하면, argparse는 프로그램이 실행될 때 인수를 제대로 파싱하는 데 도움을 줍니다. 또한 argparse는 필수 인수가 잘못 입력되거나 누락됐을 경우, 프로그램이 예외를 발생시키도록 설정할 수 있습니다.
결론적으로, argparse는 Python에서 명령줄 인터페이스를 만드는 데 매우 유용한 모듈입니다. 선택적 인수와 필수 인수를 함께 사용하려는 경우 argparse를 사용하는 것이 좋습니다. 이를 통해 프로그램이 예외를 발생시키지 않고 인수를 올바르게 파싱할 수 있도록 도와줍니다. 따라서 argparse를 사용하면 사용자가 프로그램을 보다 쉽게 이해하고 사용할 수 있습니다.