python의 세 가지 명령행 모듈 (sys.argv,argparse,click)
명령행 매개변수 모듈
여기 명령행 매개 변수 모듈은 평소 작업에서 가장 많이 사용되는 세 가지 모듈:sys.argv,argparse,click.sys.argv와argparse는 모두 내장 모듈이고 클릭은 제3자 모듈이다.
sys.argv 모듈(내장 모듈)
간단한 예제를 살펴보겠습니다.
#!/usr/bin/python
import sys
def hello(name, age, sex, *args):
print("Hello, My name is {name}.".format(name=name))
print("I'm {age} years old.".format(age=age))
print("I'm a {sex}".format(sex=sex))
print("Other word:
{args}".format(args="
".join(args)))
if __name__ == "__main__":
file_name = sys.argv[0]
name = sys.argv[1]
age = sys.argv[2]
sex = sys.argv[3]
other = sys.argv[4:]
hello(name, age, sex, *other)
스크립트 호출:
python test_sysargv.py zhangsan 13 man nibi ss
스크립트 출력:Hello, My name is zhangsan.
I'm 13 years old.
I'm a man
Other word:
nibi
ss
sys.argv 모듈은 이해하기 어렵지 않습니다. 명령 매개 변수는 목록으로 Python 스크립트에 전송됩니다. argv[0]는 스크립트의 이름이고,argv[1]는 첫 번째 매개 변수입니다. 뒤에 이렇게 추정됩니다.따라서 스크립트에서 목록의 매개 변수만 추출하면 사용할 수 있습니다.위에서 설명한 것은 파이썬 스크립트를 정확하게 호출하는 경우이고, 다음은 호출하는 데 실패한 경우입니다.
스크립트 오류 호출:
python test_sysargv.py zhangsan 13
오류 출력:
Traceback (most recent call last):
File "test_sysargv.py", line 16, in <module>
sex = sys.argv[3]
IndexError: list index out of range
오류에 대해서도 잘 이해된다. 고전적인 목록 인덱스는 범위를 초과하고, 목록 인덱스는 범위를 초과하며, 충분한 인자를 전달하지 못했다.물론 트리를 사용할 수 있지만..except 캡처 오류.그러나 이런 방법은 너무 융통성이 없다. 명령줄에서 스크립트가 규정한 매개 변수 순서에 따라 매개 변수를 입력해야 하기 때문에 이런 모듈은 일반적으로 필요한 매개 변수가 비교적 적고 고정된 스크립트를 사용한다.argparse 모듈(내장 모듈)
마찬가지로 간단한 예제를 살펴보겠습니다.
#!/usr/bin/python
import argparse
parser = argparse.ArgumentParser(description='Test for argparse module.') #
parser.add_argument("--name", "-n", help="name attribute: ")
parser.add_argument("--age", "-a", help="age attribute: ")
parser.add_argument("--sex", "-s", help="sex attribute: ")
parser.add_argument("--type", "-t", help="type attribute: ", required=True)
args = parser.parse_args()
def hello(name, age, sex, *args):
print("Hello, My name is {name}.".format(name=name))
print("I'm {age} years old.".format(age=age))
print("I'm a {sex}".format(sex=sex))
print("Other word:
{args}".format(args="
".join(args)))
if __name__ == "__main__":
print("Format of transfer file: {type}".format(type=args.type))
if args.name and args.age and args.sex:
hello(args.name, args.age, args.sex)
실행 스크립트:
python3 test_argparse.py -t json -n zhangsan -a 13 -s man
스크립트 출력 성공:Format of transfer file: json
Hello, My name is zhangsan.
I'm 13 years old.
I'm a man
Other word:
argparse 모듈의 사용에 관해서는 먼저 명령행 매개 변수의 실례를 생성한 다음에 이 대상에 속성을 추가하여 명령행에서 얻을 매개 변수를 추가해야 합니다. 필요한 매개 변수(required=True), 불필요한 매개 변수를 포함하는 매개 변수에 대한 도움말 알림 (help=") 을 할 수 있습니다.
위의 예시에는 각각 네 개의 속성이 추가되었는데, --name과 -n은 동시에 명령줄에서 사용할 수 있으며, 모두 매개 변수name를 나타낸다.ArgumentParser 통과parse_ags () 방법은 매개 변수를 해석하고 명령줄을 검사하며 매개 변수를 적당한 형식으로 변환하기 때문에 스크립트에서args를 사용할 수 있습니다.n과 args.name에서 파라미터를 가져옵니다. 해당 파라미터가 전송되지 않으면 스크립트에서 None로 가져옵니다.
명령줄 매개변수를 본 후 스크립트에 대한 도움말 프롬프트:
python3 test_argparse.py -h
usage: test_argparse.py [-h] [--name NAME] [--age AGE] [--sex SEX] --type TYPE
Test for argparse module.
optional arguments:
-h, --help show this help message and exit
--name NAME, -n NAME name attribute:
--age AGE, -a AGE age attribute:
--sex SEX, -s SEX sex attribute:
--type TYPE, -t TYPE type attribute:
또한 명령행 파라미터를 추가하는 속성에 더 많은 설정이 있습니다. 나머지는 Python 공식 문서를 참고할 수 있습니다. 안에 상세한 표시가 있습니다. 여기서 전개하지 않고 요약하면argparse 모듈의 사용이 매우 간편하고 인성화되며 일상적인 업무의 수요에 부합됩니다.클릭 모듈
먼저 간단한 사용 예제를 엽니다.
#!/usr/bin/python
import click
@click.command()
@click.option("--name", default="zhangsan", help="name attribute: ")
@click.option("--age", help="age attribute", type=int)
@click.option("--sex", help="sex attribute")
@click.option("-t", help="type attribute: ", required=True)
def hello(t, name, age, sex, *args):
print("Format of transfer file: {type}".format(type=t))
print("Hello, My name is {name}.".format(name=name))
print("I'm {age} years old.".format(age=age))
print("I'm a {sex}".format(sex=sex))
print("Other word:
{args}".format(args="
".join(args)))
if __name__ == "__main__":
hello()
실행 스크립트:
python3 test_click.py -t 1 --age 13 --sex man
스크립트 출력:Format of transfer file: 1
Hello, My name is zhangsan.
I'm 13 years old.
I'm a man
Other word:
클릭 모듈은 Flask팀의 우수한 소스 개발 프로젝트로 사용 방법은argparse 모듈과 매우 비슷하다. 마찬가지로 명령행을 위해 대량의 방법을 봉인했고 사용자는 코드 기능의 실현에만 전념해야 한다.
클릭 모듈과argparse 모듈이 다른 점은 클릭 모듈은 장식기를 사용하여 함수에 명령행 속성을 추가하는 것이다. 장식기는 간단하게 말하면 기존 함수를 수정하지 않는 기초 위에서 기능을 추가할 수 있다.장식기를 사용하지만 명령행 속성을 추가하는 방식은argparse 모듈과 비슷하며,options에서 자주 사용하는 매개 변수의 의미를 포함하여 유사한 점이 많다.주의해야 할 것은command () 를 통해 함수를 명령행의 인터페이스로 만들어야 한다는 것이다.
클릭 모듈에 대한 이야기는 대체로 여기까지 하고, 나머지 관심 있는 것은 다시 한 번 알아보세요.
총결산
이 세 가지 모듈에 대해 주의해야 할 것은 가능한 한 자신의 응용 장면에 가깝게 선택하고 진정으로 자신이 편리하게 사용할 수 있도록 하는 것이 당신이 이 모듈을 사용하는 이유이다.
이상은python의 세 가지 명령행 모듈(sys.argv,argparse,click)에 대한 상세한 내용입니다. 더 많은python 명령행 모듈에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.