티스토리 뷰

Intro

매개변수 : 매개변수(媒介變數), 파라미터(parameter), 모수(母數)는 수학 통계학에서 어떠한 시스템이나 함수의 특정한 성질을 나타내는 변수를 말한다

 

매개변수(프로그래밍) : 매개변수(영어: parameter 파라미터[*])란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다. 여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument) 라고 부른다. 보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때 마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.

 

매개변수와전달인자 : 종종 매개변수(parameter) 전달인자(argument)는 적당히 섞어서 쓰이기도 하는데, 이 경우 문맥에 따라 의미를 달리해서 해석되기도 한다. 하지만 엄밀히 말해서 매개변수는 함수의 정의부분에 나열되어 있는 변수들을 의미하며, 전달인자는 함수를 호출할때 전달되는 실제 값을 의미한다. 이같은 의미를 명확히 하기 위해 매개변수는 변수(variable)로, 전달인자는 값(value)으로 보는 것이 일반적이다.

 

ko.wikipedia.org/wiki/매개변수_(컴퓨터_프로그래밍)

 

Requirements

 - Editor : sublime text3

 - python 3.9.1

 - requests 2.25.1

 - BeautifulSoup4 4.9.3

 

Download

이전 글 확인 : (macOS)[python] IP address 확인 : Public/Pravate(Virtual)

 

1. 기상청 날씨누리 정보 확인

web site : www.weather.go.kr/weather/forecast/mid-term_01.jsp
발표시각 : 2021년 2월 15일 (월)요일 06:00

"기상전망" 부분의 /header 부분만 parsing 예정

 

2. RSS 확인 

기상청 RSS url : www.weather.go.kr/weather/forecast/mid-term-rss3.jsp

macOS safari의 경우 RSS 읽기를 지원하지 않음

freedly, newsify 등 app store에서 다운 받아 RSS를 읽을 수 있다.

google chrome은 RSS를 지원하며, 다음과 같은 XML file을 볼 수 있다.

 /header 부분만 parsing 예정

 

3-1. python code : REPL 확인

# -*- coding: utf-8 -*-

import urllib.request as req
import urllib.parse as parse
import requests
from bs4 import BeautifulSoup as BS


#### encode url 
API = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp'
values = {
	'stnID':'108'
}
params = parse.urlencode(values)

#### make url
url = '%s%s%s' % (API,'?',params)
print('url=',url)

#### download & show
def readHeader():
	res = requests.get(url)
	soup = BS(res.text, 'html.parser')
	show = soup.select_one('header').getText()
	print(show)
readHeader()

 

--REPL--

url= http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnID=108

전국 육상중기예보
202102150600
○ (강수) 18일(목) 오전 전라권에 눈, 제주도에는 비 또는 눈이 오겠습니다.<br />○ (기온) 18일(목)~19일(금)은 아침 기온 -12~0도, 낮 기온 0~13도로 어제(아침최저기온 1~10도, 낮최고기온 11~17도)보다 낮아 춥겠고, <br />          20일(토)~25일(목)은 아침 기온 -4~11도, 낮 기온 6~19도로 어제와 비슷하거나 조금 낮겠습니다.<br />○ (해상) 18일(목) 전 해상에서 바람이 매우 강하게 불고, 물결이 2.0~5.0m로 매우 높게 일겠습니다.<br />○ (주말전망) 20일(토)~21일(일)은 전국이 맑겠으나, 강원도는 구름많겠습니다. 아침 기온은 -1~9도, 낮 기온은 10~19도의 분포가 되겠습니다.


***Repl Closed***

 

3-2. python code : 매개변수(argument)를 메모리 할당하여 terminal 실행

# -*- coding: utf-8 -*-

import sys
import urllib.request as req
import urllib.parse as parse
import requests
from bs4 import BeautifulSoup as BS


#### allocation mems runing with python
## status initial
for arg in sys.argv:
	print(arg)

if len(sys.argv) <= 1:
	print('usage : <resionNumber>')
	sys.exit()

## allocation mems
regionNumber = sys.argv[1]

#### encode url 
API = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp'
values = {
	'stnID':regionNumber
}
params = parse.urlencode(values)

#### make url
url = '%s%s%s' % (API,'?',params)
print('url=',url)

#### download & show
def readHeader():
	res = requests.get(url)
	soup = BS(res.text, 'html.parser')
	show = soup.select_one('header').getText()
	print(show)
readHeader()

 

sys.argv(arguments value)는 List형태로 매개변수를 전달하는 library로 sys.argv[0]는 "파일명.py"가 할당됨

terminal 실행 시 실행파일명 뒤에 매개변수(정의된 source code에서 regionNumber 변수에 해당)로 전달

여기서 매개변수로 사용된 '108'지역번호로 사용되나, 위의 python code에서는 HTML "/header" 부분만 보여줌

terminal 실행 시 매개변수 미입력 시 'usage : <resionNumber>' 메세지를 print 한다

 

---------------terminal 실행 결과---------------

$ python3 test4.py 108

test4.py

108

url= http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnID=108

 

전국 육상중기예보

202102150600

○ (강수) 18() 오전 전라권에 , 제주도에는 또는 눈이 오겠습니다.<br />○ (기온) 18()~19() 아침 기온 -12~0, 기온 0~13도로 어제(아침최저기온 1~10, 낮최고기온 11~17)보다 낮아 춥겠고, <br />          20()~25() 아침 기온 -4~11, 기온 6~19도로 어제와 비슷하거나 조금 낮겠습니다.<br />○ (해상) 18() 해상에서 바람이 매우 강하게 불고, 물결이 2.0~5.0m 매우 높게 일겠습니다.<br />○ (주말전망) 20()~21() 전국이 맑겠으나, 강원도는 구름많겠습니다. 아침 기온은 -1~9, 기온은 10~19도의 분포가 되겠습니다.

 

3-3. python code : source code 1번째 줄 shebang(셔뱅, Linux/macOS) 사용하기

첫줄 #!/usr/local/bin/python3 추가, 그 외 위에 코드와 동일

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

import sys
import urllib.request as req
import urllib.parse as parse
import requests
from bs4 import BeautifulSoup as BS


#### allocation mems runing with python
## status initial
for arg in sys.argv:
	print(arg)

if len(sys.argv) <= 1:
	print('usage : <resionNumber>')
	sys.exit()

## allocation mems
regionNumber = sys.argv[1]

#### encode url 
API = 'http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp'
values = {
	'stnID':regionNumber
}
params = parse.urlencode(values)

#### make url
url = '%s%s%s' % (API,'?',params)
print('url=',url)

#### download & show
def readHeader():
	res = requests.get(url)
	soup = BS(res.text, 'html.parser')
	show = soup.select_one('header').getText()
	print(show)
readHeader()

 

실행권한 부여 : terminal "chmod"

$ ls -al

...

-rw-r--r--   1 yourID  staff   1461  2 10 14:04 test4.py

...

 

$ chmod 766 test4.py

 

$ ls -al

...

-rwxrw-rw-   1 yourID  staff   1461  2 10 14:04 test4.py

...

 

"-rw-r--r--" 권한에서 "-rwxrw-rw-"로 변하며 붉은색 Text로 바뀌는 것을 확인할 수 있음

 

 

---------------terminal 실행 결과---------------

$ ./test4.py 108

test4.py

108

url= http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnID=108

 

전국 육상중기예보

202102150600

○ (강수) 18() 오전 전라권에 , 제주도에는  또는 눈이 오겠습니다.<br />○ (기온) 18()~19() 아침 기온 -12~0,  기온 0~13도로 어제(아침최저기온 1~10, 낮최고기온 11~17)보다 낮아 춥겠고, <br />          20()~25() 아침 기온 -4~11,  기온 6~19도로 어제와 비슷하거나 조금 낮겠습니다.<br />○ (해상) 18()  해상에서 바람이 매우 강하게 불고, 물결이 2.0~5.0m 매우 높게 일겠습니다.<br />○ (주말전망) 20()~21() 전국이 맑겠으나, 강원도는 구름많겠습니다. 아침 기온은 -1~9,  기온은 10~19도의 분포가 되겠습니다.

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함