표준 라이브러리
파이썬 표준 라이브러리는 파이썬을 설치할 때 항상 함께 설치되는 다수의 유용한 모듈들을 말합니다. 파이썬 표준 라이브러리에 익숙해지면 이를 이용해 많은 문제를 좀 더 빠르고 쉽게 해결할 수 있습니다.
지금부터 표준 라이브러리에 포함된 많은 모듈 중에서 자주 사용되는 몇 가지 모듈에 대해 알아볼 것입니다. 파이썬 표준 라이브러리에 포함된 모든 모듈에 대한 자세한 설명은 파이썬과 함께 설치되는 설명서의 '라이브러리 레퍼런스' 섹션 에서 확인해 보실 수 있습니다.
여기서는 유용한 몇 개의 모듈을 다뤄 보겠습니다.
CAUTION: 이 챕터에서 다루는 내용은 조금 어려울 수 있습니다. 그런 경우 일단 이 챕터를 읽지 말고 넘기세요. 그렇지만 여러분이 파이썬에 좀 더 익숙해지게 되면 이 챕터로 다시 돌아오기를 강력히 권합니다.
sys
모듈
sys
모듈에는 시스템의 기능을 다루는 여러 함수가 들어 있습니다. 예를 들어 sys.argv
리스트에는 명령줄 인수들이 들어 있습니다.
또 sys
모듈을 통해 현재 사용하고 있는 파이썬의 버전을 알 수 있습니다.
>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=6, micro=0, releaselevel='final', serial=0)
>>> sys.version_info.major == 3
True
동작 원리
sys
모듈에는 version_info
라고 하는 파이썬의 버전 정보가 담겨 있는 튜플이 들어 있습니다. 첫 번째 항목은 주 버전을 의미합니다. 이제 이 정보를 읽어와 사용할 수 있습니다.
logging
모듈
여러분이 디버깅할 때 중간에 변수들의 내용 등을 출력하고 싶거나 실행 시 중요한 메시지를 어딘가에 저장해 두게 하여 여러분의 프로그램이 제대로 실행되고 있는지 확인하고 싶을 때 어떻게 하면 좋을까요? 어떻게 이러한 메시지들을 "어딘가에 저장해" 둘 수 있을까요? 이를 위해 logging
모듈을 사용합니다.
stdlib_logging.py
로 저장하세요:
import os import platform import logging
if platform.platform().startswith('Windows'): logging_file = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), 'test.log') else: logging_file = os.path.join(os.getenv('HOME'), 'test.log')
print("Logging to", logging_file)
logging.basicConfig( level=logging.DEBUG, format='%(asctime)s : %(levelname)s : %(message)s', filename=logging_file, filemode='w', )
logging.debug("Start of the program") logging.info("Doing something") logging.warning("Dying now")
실행 결과:
$ python stdlib_logging.py Logging to /Users/swa/test.log
$ cat /Users/swa/test.log 2014-03-29 09:27:36,660 : DEBUG : Start of the program 2014-03-29 09:27:36,660 : INFO : Doing something 2014-03-29 09:27:36,660 : WARNING : Dying now
이 예제에서는 'test.log' 파일의 내용을 읽기 위해 cat
명령을 활용합니다. 여러분의 명령행 환경에서 cat
명령을 사용할 수 없을 경우, 아무 텍스트 에디터에서나 test.log
파일을 열어서 내용을 확인해 보실 수 있습니다.
동작 원리
위 예제에서는 표준 라이브러리에 있는 세 가지 다른 모듈을 사용하였습니다. 그중 하나는 시스템의 운영 체제와 상호 작용할 때 쓰이는 os
모듈이고, 또 하나는 플랫폼(운영 체제라든지)의 정보를 알아 오는 데 사용되는 platform
모듈이며 마지막 하나는 정보를 기록(log) 하는 데 사용되는 logging
모듈입니다.
먼저, platform.platform()
이 반환해주는 문자열을 통해 현재 사용 중인 운영 체제가 무엇인지 알아 옵니다 (이 모듈에 대해 더 자세히 알아보려면 import platform; help(platform)
을 입력하세요). 이제 윈도우 플랫폼인 경우 홈 드라이브 및 홈 폴더를 알아내어 정보를 저장해 둘 파일 이름을 구성합니다. 다른 플랫폼의 경우, 현재 사용자의 홈 폴더만 알면 파일의 전체 경로를 구성해낼 수 있습니다.
다음으로 os.path.join()
함수를 이용하여 이 세 문자열을 하나의 경로 문자열로 합쳐 줍니다. 이때 문자열을 단순히 합치지 않고 이러한 특별한 함수를 이용하여 합쳐 준 것은 합쳐진 최종 경로가 현재 사용 중인 운영 체제의 형식에 맞는 형태로 생성되도록 해 두기 위함입니다. 참고로, 이 예제에서 활용한 join()
메소드는 os
모듈에 있는 것으로, 이 책의 다른 곳에 활용했던 문자열의 메소드인 join()
과는 다른 것입니다.
이제 logging
모듈을 이용하여 필요한 기록 사항들을 지정해준 파일에 지정된 형식대로 기록합니다.
마지막으로 각 메시지가 디버깅 정보인지, 단순한 정보인지, 경고 혹은 심각한 메시지인지 등에 따라 다르게 저장해 줍니다. 이 프로그램이 실행되어도 화면에는 아무것도 출력해 주지 않지만, 이 파일의 내용을 확인해 보면 프로그램이 실행되며 어떤 일들이 일어났는지 확인할 수 있습니다.
'금주의 모듈' 시리즈
파이썬 표준 라이브러리에는 다음과 같은 더 많은 모듈이 있습니다. 디버깅(debugging) 모듈, 명령행 옵션 관련 모듈, 정규 표현식 모듈 등등입니다.
파이썬 표준 라이브러리에 대해 좀 더 알아볼 수 있는 최고의 방법은 Doug Hellmann이 쓴 금주의 파이썬 모듈 시리즈 (책으로도 읽을 수 있습니다) 및 파이썬 공식 문서 를 읽는 것입니다.
요약
지금까지 파이썬 표준 라이브러리에 있는 몇 가지 모듈의 기능에 대해 다뤄 보았습니다. 이에 만족하지 말고, 파이썬 표준 라이브러리 문서를 읽고 사용할 수 있는 모든 모듈에 대한 정보를 알아보는 것을 추천해 드립니다.
다음으로는, 우리의 파이썬과 함께 하는 여정을 좀 더 완전하게 해 줄 파이썬의 여러 장점에 대해 알아보겠습니다.