import sys
# sys.argv[0]은 실행된 파일 경로
def print_help():
print("안녕!!!")
if __name__ == "__main__":
arguments = sys.argv
# 즉 리스트 길이가 한개이면, sys.argv[0](실행된 파일 경로)만 있으면
if len(arguments) == 1:
print("인자가 없습니다. 해당되는 param을 입력해주세요!")
# 받은 인자가 --연아 또는 --연아2 면은 ?!
elif arguments[1] == "--연아" or arguments[1] == "--연아2":
print_help()
else:
print("인자가 형식에 맞지 않습니다!")
import argparse
# parser 객체 만들기
parser = argparse.ArgumentParser(description='튜토리얼')
# parser에 인자 추가하기
parser.add_argument('--number','-num', type=int,
help="연습입니다아")
args = parser.parse_args()
for i in range(1,args.number+1):
print(f"숫자들: {i}")
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>argparse연습.py --number 5
1
2
3
4
5
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>argparse연습.py --number 5
숫자들: 1
숫자들: 2
숫자들: 3
숫자들: 4
숫자들: 5
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --help
usage: argparse연습.py [-h] [--number NUMBER]
튜토리얼
optional arguments:
-h, --help show this help message and exit
--number NUMBER 연습입니다아
인자의 이름을 지정할 때 여러 이름을 짓는 것이 가능하다. 지정할 때 두 개를 연속해서 나열한다. 보통 1~2개를 지정하는데, --help와 -h같이 fullname과 약자를 하나씩 지정하는 편
fullname은 하이픈 두개!, 별칭은 하이픈 하나!
import argparse
parser = argparse.ArgumentParser(description='튜토리얼')
# (number이 fullname, num이 별칭)
parser.add_argument('--number','-num', type=int,
help="연습입니다아")
args = parser.parse_args()
for i in range(1,args.number+1):
print(f"숫자들: {i}")
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --number 5
숫자들: 1
숫자들: 2
숫자들: 3
숫자들: 4
숫자들: 5
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --num 5
숫자들: 1
숫자들: 2
숫자들: 3
숫자들: 4
숫자들: 5
- parse_args()가 주어진 인자들을 파싱할 때는 모든 문자를 숫자 등이 아닌 문자열 취급
- type은 Common built-in types과 functions이 사용 가능. common built-in은 str, int, float, bool, etc..
- list는 안된다.
parser.add_argument('--number','-num', type=int,
help="연습입니다아")
import argparse
parser = argparse.ArgumentParser(description='튜토리얼')
parser.add_argument('--number','-num', type=int) # optional
parser.add_argument('name') # positional
args = parser.parse_args()
print("args.number: ", args.number)
print("args,name: ", args.name)
positional 인자는 반드시 지정해주어야 한다. 아래는 optional 인자인, name만 지정한 모습
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --number 3
argparse연습.py: error: the following arguments are required: name
optional 인자는 지정해 주지 않아도 된다. 지정해주지 않으면, optional의 default값
positional인자 with optional 인자
position인자 without optional 인자
.
**number의 값을 지정해 주지 않아서, None이 나옴
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py 연아
args.number: None
args,name: 연아
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --number 3 연아
args.number: 3
args,name: 연아
** positional args의 값을 쓸 때는, 값만! 써야 한다( 인자값이란 값이 사용하면 X)
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py name 연아
usage: argparse연습.py [-h] [--number NUMBER] name
argparse연습.py: error: unrecognized arguments: 연아
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --number 3 name 연아
usage: argparse연습.py [-h] [--number NUMBER] name
argparse연습.py: error: unrecognized arguments: 연아
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py 연아
args.number: None
args,name: 연아
** optional 인자는 `--foo 3`또는 `--foo=3` 두 가지 방식으로 지정할 수 있다.
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --number=5 연아
args.number: 5
args,name: 연아
parser.add_argument('name') # positional
parser.add_argument('--number','-num', type=int, default=10) # optional
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py 여나당
args.number: 10
args,name: 여나당
cf. default에 argparse.SUPPRESS를 적을 경우, 인자를 적지 않았을 때 None이 아닌 아예 인자 자체가 생성되지 않는다 ( default=argparse.SUPPRESS) 만 하면은 오류..
1. append
import argparse
parser = argparse.ArgumentParser(description='튜토리얼')
parser.add_argument('--name', '-n', action='append')
args = parser.parse_args()
print("args,name: ", args.name)
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --name=연아
args,name: ['연아']
(venv2) C:\Users\yunaj\CRAWLING2\CommandPractice>python argparse연습.py --name=연아 --name=연아2
args,name: ['연아', '연아2']
2. dest
import argparse
parser = argparse.ArgumentParser(description='튜토리얼')
# parser에 인자 추가하기
parser.add_argument('--name', '-n', action='append', dest="name_list")
args = parser.parse_args()
#print("args,name: ", args.name_list)
for name in args.name_list:
print(name)
연아
연아2
https://mentha2.tistory.com/202
https://basketdeveloper.tistory.com/
https://appia.tistory.com/507