파이썬 라이브러리 3
( 출처 : https://wikidocs.net/book/5445 )
목차
- datetime
- collections
- pprint
- random
- itertools
- functools
- os.path
- glob
- pickle
- argparse
- getpass
- 동시 실행
- json
- sys.argv
- abc
- pip
- requests
- 클로저 (closure)
13. json
example 파일 : myinfo.json
{
"name": "홍길동",
"birth": "0525",
"age": 30
}
파일 읽기
with open('myinfo.json') as f:
data = json.load(f)
파일 쓰기
data = {'name': '홍길동', 'birth': '0525', 'age': 30}
with open('myinfo.json', 'w') as f:
json.dump(data, f)
14. sys.argv : 파이썬 스크립트에 파라미터 전달
명령어 실행
c:\projects\pylib>python argv_upper.py life is too short, you need python.
명령어 출력
LIFE IS TOO SHORT, YOU NEED PYTHON.
과정
-
위와 같이 명령어 실행 시, sys.argv에는 다음과 같은 값이 저장
['argv_upper.py', 'life', 'is', 'too', 'short,', 'you', 'need', 'python']
argv_upper.py
내용 :
import sys
print(' '.join(map(str.upper, sys.argv[1:])
15. abc : 추상 클래스
추상 클래스를 상속받은 “자식 클래스가 추상 클래스의 특정 메서드를 반드시 구현하도록”한다
( if not, ERROR )
(1) 추상 클래스 구현
from abc import ABCMeta, abstractmethod
class Bird(metaclass=ABCMeta):
@abstractmethod
def fly(self):
pass
(2) (추상 클래스를 상속받는) 자식 클래스 구현
- 문제 :
fly
메소드를 정의하지 않음 -> 에러!
class Eagle(Bird):
pass
eagle = Eagle()
eagle.fly()
~~~
TypeError: Can't instantiate abstract class Eagle with abstract method fly
16. pip
# 1) 설치
pip install SomePackage # default : 가장 최신 버전
pip install SomePackage==1.0.4
# 2) 지우기
pip uninstall SomePackage
# 3) 업그레이드
pip install --upgrade SomePackage
# 4) 설치된 패키지 목록
pip list
requirements.txt
docutils==0.9.1
Jinja2==2.6
Pygments==1.5
Sphinx==1.1.2
한방에 설치하기!
pip install -r requirements.txt
17. requests
(1) 게시물 조회 (GET)
url = 'https://jsonplaceholder.typicode.com/posts/1'
res = requests.get(url)
pprint.pprint(res.json())
(2) 조건에 맞는 게시물 조회 (GET)
url = 'https://jsonplaceholder.typicode.com/posts'
params = {'userId': 1}
res = requests.get(url, params=params)
(3) 게시물 저장 (POST)
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-type': 'application/json; charset=utf-8'}
data = {
'title': 'foo',
'body': 'bar',
'userId': 1,
}
res = requests.post(url, headers=headers, data=json.dumps(data))
(4) 게시물 삭제 (DELETE)
url = 'https://jsonplaceholder.typicode.com/posts/1'
res = requests.delete(url)
# 18. 클로저 ( closure )
함수 내에 내부 함수(inner function)를 구현하고, 그 내부 함수를 리턴하는 함수
def mul(m):
def wrapper(n):
return m * n
return wrapper
mul3 = mul(3)
mul5 = mul(5)
print(mul3(10)) # 30
print(mul5(10)) # 50