conansjh20.tistory.com/63

 

당신이 꼭 사용해 봐야 할 파이썬 패키지 탑 15 (1~8)

medium.com 이라고 각 분야의 전문가들이 전문적인 기술이나 의견을 소개하는 홈페이지입니다. 우연히 알게되어 가끔 들어갔었는데 많은 좋은 글들이 있습니다. 글을 몇개 읽으면 1달 무료 사용 및

conansjh20.tistory.com

위에 이어서 나머지 순위도 살펴보겠습니다.

 

9. Chardet

chardet 모듈을 이용하여 파일이나 일련의 데이터에서 문자열을 찾을 수 있습니다. 무작위로 적혀진 대량의 문서를 분석할때 유용합니다. 또한 원격으로 다운로드한 데이터에서 문자열을 찾을때도 사용됩니다.

 

chardet 을 설치한 이후 추가로 chardetect를 추가해줍니다. 아래와 같이 사용됩니다.

1
2
chardetect somefile.txt
somefile.txt: ascii with confidence 1.0
cs

물론 프로그래밍 방식으로 라이브러리를 사용할 수 있습니다. 문서를 참고하세요.

 

10. Python-dateutil

python-dateutil 모듈은 기본 datetime보다 훨씬 강력한 기능을 제공합니다. 제 경험상 기본 datetime은 기능적으로 한계가 있고 그지점에 python-dateutil이 들어서는 것 같습니다.

 

이 라이브러리를 가지고 매우 많은 멋진것들을 할 수 있습니다. 단지 여기서는 제가 특별하게 유용하다고 느낀 예시를 놓겠습니다: 뭔가 불분명한 로그 파일들에서 날짜 데이터를 가져오는 것입니다.

1
2
3
4
5
6
from dateutil.parser import parse
 
logline = 'INFO 2020-01-01T00:00:01 Happy new year, human.'
timestamp = parse(logline, fuzzy=True)
print(timestamp)
# 2020-01-01 00:00:01
cs

전체 문서를 확인하세요.

 

- 상대적인 값들을 계산(다음달, 내년, 다음주 월요일, 지난달, 등) 두 날짜의 상대적인 값들

- iCarendar 사양의 superset를 이용하여 회귀 규칙을 근간으로 한 날짜 계산

- Timezone (tzinfo) implementations for tzfile files (/etc/localtime, /usr/share/zoneinfo, etc), TZ environment string (in all known formats), iCalendar format files, given ranges (with help from relative deltas), local machine timezone, fixed offset timezone, UTC timezone, and Windows registry-based time zones. (여기는 그냥 번역을 안하는게 나을듯 합니다.😅

- Olson Database를 기반한 최신 세계 시간대 정보

 - 부활절 주말 계산

 

11. Progress bars: progress and tqdm

이 두가지 패키지를 이용해서 저는 조금 사기를 치곤 합니다. 둘 중 하나만 언급할 수는 없겠습니다.

 

스스로 진행 상태 바를 만들수 있겠지만 progress 또는 tqdm 패키지를 이용하는 것이 좀더 빠르고 에러도 덜 발생할 듯 합니다.

 

Progress

이것 하나로 진행상태바를 쉽게 만들 수 있습니다.

1
2
3
4
5
6
7
from progress.bar import Bar
 
bar = Bar('Processing', max=20)
for i in range(20):
    # Do some work
    bar.next()
bar.finish()
cs

다음의 움짤은 가능한 여러 진행 상태 종류를 보여주고 있습니다.

짧지만 간결하게 설명된 문서를 보세요.

 

tqdm

tqdm은 조금은 거칠게 보이지만 더욱 최신 느낌이 납니다. 아래 움짤을 보세요.

tqdm 은 progress와 비교하여 추가 트릭이 있는데 커맨드 라인에 사용됩니다.

 

$ tar -zcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \
> backup.tgz
32%|██████████▍               | 8.89G/27.9G [00:42<01:31, 223MB/s]

 

Github의 tdqm 페이지를 보시면 더 많은 예제와 문서를 보실 수 있습니다.

 

12. IPython

여러분은 파이썬이 상호작용하는 shell임을 알고 계실 것입니다. 파이썬을 하며 중간중간 고치는데 가장 좋은 방법입니다. 하지만 IPython도 알고 계시나요? 상호작용하는 shell을 많이 사용한다면 IPython은 잘 모르시는 것입니다. 그리고 이걸 분명히 확인해 보시길 바랍니다.

 

IPython shell의 몇가지 제공되는 기능입니다.

- Comprehensive object introspection.

- Input history, persistent across sessions.

- Caching of output results during a session with automatically generated references.

- Tab completion, with support by default for completion of python variables and keywords, filenames, and function keywords.

- ‘Magic’ commands for controlling the environment and performing many tasks related either to IPython or the operating system.

- Session logging and reloading. Integrated access to the pdb debugger and the Python profiler.

- A less known feature of IPython: its architecture also allows for parallel and distributed computing.

(이부분도 그냥 번역을 하는것이 의미가 없을 것 같습니다...)

 

IPython은 Jupyter notebook의 핵심입니다. Jupyter notebook은 오픈 소스 웹 애플리케이션으로 살아있는 코드, 방정식, 시각화 그리고 서사적인 문장들이 포함되어 있는 문서를 만들수 있게 해줍니다.

 

13. Homeassistant

저는 홈 오토매이션을 사랑합니다. 조금은 제 취미이고 하고 또 이제는 제 집의 많은 부분을 컨트롤하고 있어서 꽤나 진지한 것이 되버렸습니다. Home Assistant를 통하여 모든 집안의 시스템을 하나로 통합할 수 있습니다. 비록 완성된 application이 있지만 Python PyPI package로 다운받아 설치할 수 있습니다.

 

- 모든 집안의 전등이나 블라인드를 자동화

- 가스/전기 사용량, 태양광 생산량을 모니터합니다.

- 모든 전화들의 위치를 확인할 수 있고 제가 일정 구역에 들어서면 액션이 시작됩니다. 제가 집에오면 차고 불이 켜지는 것 같은 것들.

- 또 엔터테인먼트 시스템도 컨트롤 합니다. (삼성 티비나 소노스 스피커 같은.)

- 네트워트에 있는 대부분의 장치의 자동화를 할 수 있고 시작하기 쉽습니다.

 

이제 Home Assistant를 사용한 지 3년이 되갑니다만 여전이 베타버전입니다. 하지만 이제껏 제가 사용한 플랫폼 중 가장 뛰처납니다. 모든 장치와 프로토콜(전송방식)을 통합하여 컨트롤 할 수 있습니다. 그리고 무료이고 오픈 소스입니다.

 

자신의 집의 자동화에 관심이 있다면 기회가 왔습니다. 만약 더 배우고 싶다면 공식 홈페이지에 가시고 라스베리 파이를 설치하세요. 훨씬 쉽고 안전하게 시작하실 수 있습니다. 저는 좀더 강력한 'Docker' 컨테이너에 설치했습니다.

 

14. Flask

Flask는 아주 빠르고 간단하게 웹서비스를 만들고자할때 사용합니다. Flask는 간단하지만 확장성이 핵심이며 공식적인것과 커뮤니티에서 나오는 700개가 넘는 익스텐션이 있습니다.

 

만약 큰 웹앱을 만드신다면 Django를 이용하는 게 나을것 같습니다.

 

15. Beautiful soup

만약 웹사이트에서 HTML을 가져온다면 정확히 원하는 부분만을 불러오고 싶어할 것입니다. Beautiful Soup은 HTML이나 XML파일에서 데이터를 가져오는 파이썬 라이브러리입니다. 서핑하고 검색하고 구조를 수정하는 간단한 방법을 제공하고 있습니다. 모든 종류의 HTML 파일을 다룰수 있어 (심지어 깨진 파일이라도) 강력합니다. 사실 HTML은 자주 깨지니 이 기능은 매우 강력한 기능입니다.

 

주요 기능은 다음과 같습니다.

- 모든 불러오는 문서는 유니코드로 변환하고 내보낼 때는 UTF-8로 변환해줍니다. 인코딩에 신경쓸 필요가 없습니다.

- Beautiful Soup는 lxml과 html5lib같이 파이썬 분석 기능을 가진 모듈 중에서 가장 높은 인기를 가지고 있고 다른 분석 전략을 시도해볼 수 있고 유연성을 고려한 속도도 교환 가능합니다.

- Beautiful Soup 분석은 나무같은 계층구조로 되어 있는것은 무엇이든 할 수 있습니다. "모든 링크를 찾아라" 또는 "굵은 글씨체로 되어 있는 표를 찾아서 그 텍스트를 알려달라." 같이.

 

파이썬 프로그래밍에 대하여 더 배워보려면 파이썬 튜토리얼을 읽어보세요. 처음 시작하는 이들에게 이상적이지만 또한 객체 지향 프로그래밍이나 소프트웨어 전개등과 같은 토픽도 나와 있습니다.

 

🤣

+ Recent posts