티스토리 뷰
이 내용은 https://docs.python.org/ko/3.7/library/argparse.html#description 을 참고하였습니다.
argparse는 파이썬에서 제공되는 표준 라이브러리로 명령행을 구분해주는 편한 모듈이다.
이 모듈을 사용하면 커맨드 라인의 문자열들을 일일히 파싱해서 구분하지 않아도 되고, 다양한 함수들을 이용해 편하게 커맨드 라인 옵션을 입력할 수 있다.
아래의 코드는 간단한 소켓 프로그램을 코딩할 때 사용했던 커맨드 라인 입력을 받는 부분이다.
client.py 일부
-p 옵션: 포트번호
-i 옵션: 서버 ip주소
-s 옵션: 입력할 문자열
파이썬은 인터프리터 언어이기 때문에 따로 메인함수가 없다. 대신에 들여쓰기를 하지 않은 코드들을 순차적으로 실행한다. (함수나 클래스의 정의 부분은 제외)
__name__ 은 현재 모듈(작성중인 파일)의 이름을 담고 있는 내장 함수로 이 모듈이 직접 실행되는 경우(> python client.py)에만 __name__이 __main__으로 설정된다.
즉, 이 코드는 커맨드 라인에서 인자 값을 주기 위해 .py 파일을 직접 실행해야 하는 경우에 필요하다.
parser = argparse.ArgumentParser(description="Echo client -p port -i host -s string")
argparse.ArgumentParser(description="")로 parser 객체를 생성한다.
description은 인자 도움말 전에 표시할 텍스트다. 이 인자는 프로그램의 기능과 작동 방식에 대한 간략한 설명을 제공한다.
parser.add_argument('-p', help="port_number", required=True)
add_argument는 단일 명령행 인자를 구문 분석하는 방법을 정의한다. 앞에 나오는 '-p'는 명령행 옵션 문자열의 이름이다. 위의 사용한 옵션들은
help : 인자가 하는 일에 대한 간단한 설명
required : 명령행 옵션을 생략할 수 있는지의 여부 (True면 생략 x)
nargs : 소비되어야 하는 명령행 인자 수 ('+'를 주면 모든 명령행 인자를 리스트로 모은다. 또한 적어도 하나의 명령행 인자가 제공되지 않으면 에러 메세지를 띄운다.)
그 밖에 알면 좋은 옵션으로
type : 명령행 인자가 반환되어야 할 타입
default : 인자가 명령행에 없는 경우 생성되는 값
args = parser.parse_args()
parse_args
(args=None, namespace=None)로 인자 문자열을 객체로 변환하고 namespace의 attribute로 설정한다.
위의 경우 각각 옵션 p, i, s의 이름으로 객체에 담긴다.
run(host=args.i, port=int(args.p), strList=args.s)
위의 코드 상에서는 없지만 run이라는 함수를 정의했는데, 그 run함수의 인자 값으로 객체로 변환된 명령행 인자 값들을 전달하는 코드다.
'python' 카테고리의 다른 글
Python 파일 처리 (0) | 2019.03.23 |
---|---|
Python 소켓 모듈 사용 (0) | 2019.03.17 |
Python List tip, lambda (0) | 2019.03.13 |
Python mutable vs immutable (0) | 2019.03.12 |
Python Quicksort (0) | 2019.03.08 |
- Total
- Today
- Yesterday
- Spring Data JPA
- 스프링 mvc
- Python Cookbook
- jsp
- git branch
- Thymeleaf
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 패킷 스위칭
- 스프링 테스트
- Computer_Networking_A_Top-Down_Approach
- git merge
- Spring
- 파이썬 for Beginner 솔루션
- 운영체제 반효경
- 선형 회귀
- 파이썬 for Beginner 연습문제
- JPA
- git
- 스프링 컨테이너
- Spring Boot
- 김영환
- 방명록 프로젝트
- 지옥에서 온 git
- Gradle
- spring mvc
- 스프링
- 쉘 코드
- 프로그래머스
- 생활코딩 javascript
- 쉽게 배우는 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |