* 이 포스팅은 이전 포스팅과 이어집니다.
이전에는 프로그램의 코드내에, 원하는 정보를 입력하여야만 했는데
이보다 더 좋은 방법이 있습니다.
바로 명령줄에서 정보를 입력받는 방법입니다.
"sys.argv"
명령줄에서 정보를 입력 받아올 수 있습니다.
#!/usr/bin/env python
# 라이브러리 불러오기
import sys
import urllib.request as req
import urllib.parse as parse
# 명령줄 매개변수 추출
if len(sys.argv) <= 1:
print("USAGE: download-forcast-argv <Region Number>")
sys.exit()
regionNumber = sys.argv[1]
# 매개변수를 URL 인코딩합니다.
API = "http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
values = {
'stnId': regionNumber
}
params = parse.urlencode(values)
url = API + "?" params
print("url=", url)
# 다운로드 합니다.
data = req.urlopen(url).read()
text = data.decode("utf-8")
print(text)
" import sys "
sys 라이브러리를 가져옵니다.
" import urllib.request as req "
urllib라이브러리, request모듈을 req라는 이름을 붙여 가져옵니다.
" import urllib.parse as parse "
urllib라이브러리, request모듈을 parse라는 이름을 붙여 가져옵니다.
" if len(sys.argv) <=1: "
" print("USAGE: download-forcast-argv <Region Number>") "
" sys.exit()"
만약에 명령줄에 입력된 정보가 1이하일때 ( 필요한 정보가 입력되지 않았을때 )
제대로된 사용방법을 화면에 출력하고,
프로그램을 종료합니다.
" regionNumber = sys.argv[1] "
입력된 정보를 받아, regionNumber라는 공간(변수)에 저장합니다.
" API = "주소" "
" values = { 'stnId' : regionNumber } "
주소를 사용할 공간 API와, URL에 입력할 딕셔너리 {} values를 만들어줍니다.
" params = parse.urlencode(values) "
values를 인코딩해 컴퓨터가 이해할 수 있는 언어로 바꿔줍니다.
" url = API + "?" + params "
url을 매개변수를 적용할 수 있는 형태로 만들어줍니다.
" print("url=", url) "
만들어진 최종 url을 화면에 출력해 확인합니다.
" data = req.urlopen(url).read() "
urlopen()으로 url 주소에 접근해서, 바이너리 형태로 read() data에 저장합니다.
" text = data.decode("utf-8") "
decode()로 data를 utf-8 텍스트 형식으로 바꿔 text에 저장합니다.
"print(text)"
가공된 정보를 화면에 출력합니다.
이제 원하는 지역코드를 명령창에 입력하여,
코드를 직접열어 수정하는 일 없이
날씨 정보를 확인 할 수 있습니다!