매우 실 용적 인 Python 라 이브 러 리 몇 개 를 정리 하 다.

12949 단어 Python창고.
자체 창고
날짜 시간
datetime 은 Python 처리 날짜 와 시간의 표준 라 이브 러 리 입 니 다.
1.현재 날짜 와 시간 가 져 오기

>>> from datetime import datetime

>>> now = datetime.now()

>>> print(now)

2021-06-14 09:33:10.460192

>>> print(type(now))

<class 'datetime.datetime'>
2.지 정 된 날짜 와 시간 가 져 오기

>>> from datetime import datetime

>>> dt = datetime(2021,6,10,12,0)

>>> print(dt)

2021-06-10 12:00:00
3.datetime 에서 timestamp 로 전환
컴퓨터 에서 시간 은 실제로 숫자 로 표시 된다.우 리 는 1970 년 1 월 1 일 00:00:00 UTC+00:00 시간 대 를 epoch time 이 라 고 부 르 며0(1970 년 이전의 시간 timestamp 는 마이너스)로 기록 합 니 다.현재 시간 은 epoch time 의 초 수 에 비해 timestamp(시간 스탬프)라 고 부 릅 니 다.

>>> from datetime import datetime

>>> now = datetime.now()

>>> now

datetime.datetime(2021, 6, 14, 9, 38, 34, 969006)

>>> now.timestamp()	# datetime   timestamp

1623634714.969006
4.timestamp 에서 datetime 로 전환

>>> from datetime import datetime

>>> timestamp = 1623634714.969006

>>> print(datetime.fromtimestamp(timestamp))

2021-06-14 09:38:34.969006
5.str 에서 datetime 로 전환

>>> from datetime import datetime

>>> day = datetime.strptime('2021-6-10 12:12:12','%Y-%m-%d %H:%M:%S')

>>> print(day)

2021-06-10 12:12:12
6.datetime 에서 str 로 전환

>>> from datetime import datetime

>>> now = datetime.now()

>>> print(now)

2021-06-14 09:49:02.281820

>>> print(type(now))

<class 'datetime.datetime'>

>>> str_day = now.strftime('%Y-%m-%d %H:%M:%S')

>>> print(str_day)

2021-06-14 09:49:02

>>> print(type(str_day))

<class 'str'>
2.컬 렉 션
collections 는 Python 내 에 만들어 진 집합 모듈 로 많은 유용 한 집합 류 를 제공 하 는데 그 중에서 통계 기능 이 매우 실 용적 이다.
CounterCounter간단 한 계수기 입 니 다.예 를 들 어 통계 문자 가 나타 난 개수 입 니 다.

>>> from collections import Counter

>>> c = Counter()

>>> str = 'jdkjefwnewnfjqbefbqbefqbferbb28934`83278784727'

>>> c.update(str)

>>> c

Counter({'b': 6, 'e': 5, 'f': 5, '8': 4, '7': 4, 'j': 3, 'q': 3, '2': 3, 'w': 2, 'n': 2, '3': 2, '4': 2, 'd': 1, 'k': 1, 'r': 1, '9': 1, '`': 1})
베이스 64
Base 64 는 임의의 바 이 너 리 데 이 터 를 64 글자 로 표시 하 는 방법 이다.
메모 장 으로exe,jpg,pdf이 파일 들 을 열 때 우 리 는 많은 난 장 판 을 볼 수 있 습 니 다.바 이 너 리 파일 은 표시 하고 인쇄 할 수 없 는 문 자 를 많이 포함 하고 있 기 때문에 메모 장 같은 텍스트 처리 소프트웨어 가 바 이 너 리 데 이 터 를 처리 하려 면 바 이 너 리 에서 문자열 로 전환 하 는 방법 이 필요 합 니 다.Base 64 는 가장 흔히 볼 수 있 는 바 이 너 리 인 코딩 방법 이다.

>>> import base64
>>> base64.b64encode(b'binary\x00string')
b'YmluYXJ5AHN0cmluZw=='
>>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==')
b'binary\x00string'
4.hashlib
Python 의 hashlib 는 MD5,SHA 1 등 일반적인 요약 알고리즘 을 제공 합 니 다.
요약 알고리즘 은 무엇 입 니까?요약 알고리즘 은 해시 알고리즘,해시 알고리즘 이 라 고도 부른다.이것 은 함 수 를 통 해 임의의 길이 의 데 이 터 를 고정된 데이터 문자열 로 변환 합 니 다.
우 리 는 일반적인 요약 알고리즘 MD5 를 예 로 들 어 문자열 의 MD5 값 을 계산 합 니 다.

>>> import hashlib

>>> md5 = hashlib.md5()

>>> md5.update("     ".encode('utf-8'))

>>> print(md5.hexdigest())

05eb21a61d2cf0cf84e474d859c4c055
요약 알고리즘 은 어디 에 응용 할 수 있 습 니까?상용 예 를 들다.
사용자 가 로그 인 할 수 있 는 모든 사 이 트 는 사용자 가 로그 인 한 사용자 이름과 암 호 를 저장 합 니 다.어떻게 사용자 이름과 암 호 를 저장 합 니까?방법 은 데이터베이스 시트 에 저장 하 는 것 이다.사용자 암 호 를 명문 으로 저장 하면 데이터베이스 가 유출 되면 모든 사용자 의 암 호 는 해커 의 손 에 들어간다.그 밖 에 사이트 운영 자 는 데이터 베 이 스 를 방문 할 수 있다.즉,모든 사용자 의 암 호 를 얻 을 수 있다.정확 한 암 호 를 저장 하 는 방식 은 사용자 의 명문 암 호 를 저장 하지 않 고 사용자 암 호 를 저장 하 는 요약 이다.예 를 들 어 MD5 는 사용자 가 로그 인 할 때 먼저 사용자 가 입력 한 명문 암호 의 MD5 를 계산 한 다음 에 데이터 베이스 에 저 장 된 MD5 와 비교 한 다음 에 일치 하면 암호 입력 이 정확 하 다 는 것 을 설명 하고 일치 하지 않 으 면 암 호 는 틀림없이 잘못된 것 이다.
제3자 창고
1.요청
requests 는 Python 제3자 라 이브 러 리 로 URL 자원 을 처리 하 는 데 매우 편리 합 니 다.이전의 파충류 소개 글 에서 우 리 는 이미 그것 을 초보 적 으로 인식 했다.
1.설치 요청
Anaconda 가 설치 되 어 있 으 면 requests 를 사용 할 수 있 습 니 다.그렇지 않 으 면 명령 행 아래 pip 를 통 해 설치 해 야 합 니 다:

$ pip install requests
Permission denied 설치 에 실패 하면 sudo 를 추가 하여 다시 시도 하 십시오.
2.GET 를 통 해 콩잎 첫 페이지 에 접근 하려 면 몇 줄 의 코드 만 필요 합 니 다.

>>> import requests
>>> r = requests.get('https://www.douban.com/') #     
>>> r.status_code
200
>>> r.text
r.text
'<!DOCTYPE HTML>
<html>
<head>
<meta name="description" content=" 、 、 、 ...'
3.매개 변수 가 있 는 URL 에 dict 를params매개 변수 로 입력 합 니 다.

>>> r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})
>>> r.url #      URL
'https://www.douban.com/search?q=python&cat=1001'
4,requests 자동 감지 인 코딩,사용 가능encoding속성 보기:

>>> r.encoding
'utf-8'
5.응답 이 텍스트 든 바 이 너 리 내용 이 든 우 리 는content속성 으로bytes대상 을 얻 을 수 있 습 니 다.

>>> r.content
b'<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...'
6.requests 의 편리 한 점 은 특정한 유형의 응답,예 를 들 어 JSON 을 직접 얻 을 수 있다 는 것 이다.

>>> r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
>>> r.json()
{'query': {'count': 1, 'created': '2017-11-17T07:14:12Z', ...
7.HTTP Header 를 전송 해 야 할 때 dict 를headers매개 변수 로 전송 합 니 다.

>>> r = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})
>>> r.text
'<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> ( )</title>...'
8.POST 요청 을 보 내 려 면get()방법 을post()로 바 꾼 다음 에data매개 변 수 를 POST 요청 데이터 로 전송 해 야 합 니 다.

>>> r = requests.post('https://accounts.douban.com/login', data={'form_email': '[email protected]', 'form_password': '123456'})
9.requests 는 기본적으로application/x-www-form-urlencodedPOST 데이터 인 코딩 을 사용 합 니 다.JSON 데 이 터 를 전달 하려 면 json 인 자 를 직접 전송 할 수 있 습 니 다.

params = {'key': 'value'}
r = requests.post(url, json=params) #         JSON
10.유사 한 것 은 파일 을 업로드 하 는 데 더 복잡 한 인 코딩 형식 이 필요 하지만 requests 는files매개 변수 로 간략화 합 니 다.

>>> upload_files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=upload_files)
파일 을 읽 을 때'rb'즉 바 이 너 리 모드 로 읽 어야 합 니 다.이렇게 가 져 온bytes길이 가 파일 의 길이 입 니 다.post()방법 을put(),delete()등 으로 교체 하면 PUT 또는 DELETE 방식 으로 자원 을 요청 할 수 있 습 니 다.
11.응답 내용 을 쉽게 얻 을 수 있 을 뿐만 아니 라 requests 는 HTTP 응답 을 얻 는 다른 정보 도 매우 간단 합 니 다.예 를 들 어 응답 헤더 가 져 오기:

>>> r.headers
{Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Content-Encoding': 'gzip', ...}
>>> r.headers['Content-Type']
'text/html; charset=utf-8'
12.requests 는 쿠키 에 대해 특별한 처 리 를 하여 쿠키 를 분석 하지 않 아 도 지 정 된 쿠키 를 쉽게 얻 을 수 있 습 니 다.

>>> r.cookies['ts']
'example_cookie_12345'
13.요청 에 Cookie 를 전송 하려 면 dict 가cookies인 자 를 준비 해 야 합 니 다.

>>> cs = {'token': '12345', 'status': 'working'}
>>> r = requests.get(url, cookies=cs)
14.마지막 으로 시간 초 과 를 지정 하고 초 단위 의 timeout 인 자 를 입력 해 야 합 니 다.

>>> r = requests.get(url, timeout=2.5) # 2.5    
2.chardet
문자열 인 코딩 은 항상 골 치 아 픈 문제 이다.특히 우리 가 규범 에 맞지 않 는 제3자 웹 페이지 를 처리 할 때.파 이 썬 은 유 니 코드 가 표시 하 는strbytes두 가지 데이터 형식 을 제공 하고encode()decode()방법 으로 전환 할 수 있 지만 인 코딩 을 모 르 는 상태 에서bytesdecode()를 만 들 기 가 쉽 지 않 습 니 다.
알 수 없 는 인 코딩 의bytes에 대해 서 는str로 변환 하려 면 먼저'추측'인 코딩 이 필요 합 니 다.추측 하 는 방식 은 각종 인 코딩 의 특징 문 자 를 먼저 수집 하고 특징 문자 에 따라 판단 하면 큰 확률 로'맞 출 수 있다'는 것 이다.
물론 우 리 는 이 검 측 코드 의 기능 을 처음부터 스스로 쓸 수 없 을 것 이다.이렇게 하 는 것 은 시간 이 걸 릴 것 이다.chardet 라 는 제3자 라 이브 러 리 가 마침 도움 이 되 었 다.그것 으로 인 코딩 을 검사 하면 간단 하고 사용 하기 쉽다.
1.chardet 설치
Anaconda 가 설치 되 어 있 으 면 chardet 는 이미 사용 할 수 있 습 니 다.그렇지 않 으 면 명령 행 아래 pip 를 통 해 설치 해 야 합 니 다:

$ pip install chardet
Permission denied 설치 에 실패 하면 sudo 를 추가 하여 다시 시도 하 십시오.
2.우리 가bytes를 받 았 을 때 검 측 코드 를 받 을 수 있 습 니 다.chardet 로 인 코딩 을 검사 하려 면 코드 한 줄 만 필요 합 니 다:

>>> chardet.detect(b'Hello, world!')
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
3.psutil
Python 으로 스 크 립 트 를 작성 하여 일상적인 운영 을 간소화 하 는 것 은 Python 의 중요 한 용도 입 니 다.리 눅 스에 서 많은 시스템 명령 이 우리 로 하여 금 시스템 운행 상 태 를 시시각각 감시 하 게 할 수 있다.예 를 들 어ps,top,free등 이다.이 시스템 정 보 를 얻 으 려 면 Python 은subprocess모듈 을 통 해 호출 하고 결 과 를 얻 을 수 있 습 니 다.그러나 이렇게 하 는 것 은 매우 번 거 로 워 보인다.특히 해석 코드 를 많이 써 야 한다.
Python 에서 시스템 정 보 를 얻 는 또 다른 좋 은 방법 은psutil이 제3자 모듈 을 사용 하 는 것 입 니 다.한두 줄 코드 를 통 해 시스템 모니터링 을 실현 할 수 있 을 뿐만 아니 라 플랫폼 을 넘 어 사용 할 수 있 습 니 다.Linux/UNIX/OSX/Windows 등 을 지원 하 며 시스템 관리자 와 운영 파트너 가 없어 서 는 안 되 거나 없어 서 는 안 되 는 필수 모듈 입 니 다.
1.psutil 설치
Anaconda 가 설치 되 어 있 으 면 psutil 은 이미 사용 할 수 있 습 니 다.그렇지 않 으 면 명령 행 아래 pip 를 통 해 설치 해 야 합 니 다:

$ pip install psutil
Permission denied 설치 에 실패 하면 sudo 를 추가 하여 다시 시도 하 십시오.
2.CPU 정보 가 져 오기
먼저 CPU 정 보 를 가 져 옵 니 다.

>>> import psutil
>>> psutil.cpu_count() # CPU    
4
>>> psutil.cpu_count(logical=False) # CPU    
2
# 2        , 4  4     
3.CPU 의 사용자/시스템/남 은 시간 통계:

>>> psutil.cpu_times()
scputimes(user=10963.31, nice=0.0, system=5138.67, idle=356102.45)
4.메모리 정보 가 져 오기
psutil 을 사용 하여 물리 적 메모리 와 메모리 정 보 를 교환 합 니 다.각각 사용:

>>> psutil.virtual_memory()
svmem(total=8589934592, available=2866520064, percent=66.6, used=7201386496, free=216178688, active=3342192640, inactive=2650341376, wired=1208852480)
>>> psutil.swap_memory()
sswap(total=1073741824, used=150732800, free=923009024, percent=14.0, sin=10705981440, sout=40353792)
바이트 단위 의 정 수 를 되 돌려 보 니 총 메모리 크기 는 8589934592=8GB 로 7201386496=6.7GB 로 66.6%사용 됐다.
반면 교환 구역 크기 는 1073741824=1GB 였 다.
5.디스크 정보 가 져 오기
psutil 을 통 해 디스크 파 티 션,디스크 사용률,디스크 IO 정 보 를 얻 을 수 있 습 니 다.

>>> psutil.disk_partitions() #       
[sdiskpart(device='/dev/disk1', mountpoint='/', fstype='hfs', opts='rw,local,rootfs,dovolfs,journaled,multilabel')]
>>> psutil.disk_usage('/') #       
sdiskusage(total=998982549504, used=390880133120, free=607840272384, percent=39.1)
>>> psutil.disk_io_counters() #   IO
sdiskio(read_count=988513, write_count=274457, read_bytes=14856830464, write_bytes=17509420032, read_time=2228966, write_time=1618405)
자,우선 이렇게 많은 것 을 소개 합 시다.더 많은 실 용적 인 Python 라 이브 러 리 뒤에 탕 딩 이 다시 한 번 소개 해 드 리 겠 습 니 다.
여기 서 아주 실 용적 인 Python 라 이브 러 리 를 정리 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Python 라 이브 러 리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기