17. 표준 라이브러리

파이썬 표준 라이브러리는 파이썬을 설치할 때 항상 함께 설치되는 수많은 모듈을 말합니다. 파이썬 표준 라이브러리에 익숙해지면 이를 이용해 해결할 수 있는 많은 문제를 좀 더 쉽고 빠르고 해결할 수 있습니다.

지금부터 표준 라이브러리에 포함된 많은 모듈 중 자주 사용되는 몇 가지 모듈을 살펴보겠습니다. 파이썬 표준 라이브러리에 포함된 모든 모듈에 대한 자세한 정보는 파이썬과 함께 설치되는 설명서의 '라이브러리 레퍼런스' 섹션에서 확인할 수 있습니다.

여기서는 유용한 몇 개의 모듈만 소개하겠습니다.


CAUTION

이 챕터에서 다루는 내용은 조금 어려울 수 있습니다. 그런 경우 일단 이 챕터를 읽지 말고 넘기세요. 그렇지만 여러분이 파이썬에 좀 더 익숙해지게 되면 이 챕터로 꼭 읽기 권합니다.



17.1 sys 모듈

sys 모듈에는 시스템 기능을 다루는 여러 함수가 들어 있습니다. 예를 들어 sys.argv 리스트에는 명령줄 인수가 들어 있습니다.

또 sys 모듈을 통해 현재 사용하고 있는 파이썬의 버전을 알아올 수 있습니다.

$ python
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
>>> sys.version_info.major == 2
True


sys 모듈에는 version_info라고 하는 파이썬의 버전 정보가 담겨 있는 튜플이 들어 있습니다.첫 번째 항목은 주 버전을 의미합니다. 이제 이 정보를 읽어와 사용할 수 있습니다.


17.2 logging 모듈

여러분이 디버그를 할 때 중간에 변수의 내용 등을 출력하고 싶거나 실행 중에 중요한 메시지를 어딘가에 저장하여 여러분의 프로그램이 제대로 실행되고 있는지 확인하고 싶으면 어떻게 해야 할까요? 어떻게 하면 이러한 메시지를 어딘가에 저장할 수 있을까요? 이럴 때 필요한 게 logging 모듈입니다.


https://github.com/swaroopch/byte-of-python/blob/master/programs/stdlib_logging.py

import os, platform, 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")
stdlib_logging.py(이 코드를 stdlib_logging.py로 저장하세요)

실행 결과는 다음과 같습니다.

$ 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


여러분의 명령행 환경에서 cat 명령을 사용할 수 없을 경우, 아무 텍스트 에디터에서나 test.log 파일을 열어서 내용을 확인할 수 있습니다.

이 예제에서는 표준 라이브러리에 있는 세 가지 다른 모듈을 사용하였습니다. 그중 하나는 시스템의 운영 체제와 상호 작용할 때 쓰이는 os 모듈이고, 또 하나는 플랫폼(운영 체제라던지)의 정보를 알아오는 데 사용되는 platform 모듈입니다. 마지막 하나는 정보를 기록log하는 데 사용되는 logging 모듈입니다.

먼저, platform.platform()이 반환해주는 문자열을 통해 현 운영 체제가 무엇인지 알아옵니다 (이 모듈에 대해 더 자세히 알아보려면 import platform; help(platform)를 입력하세요). 이제 윈도 플랫폼인 경우 홈 드라이브 및 홈 폴더를 알아내어 정보를 저장해 둘 파일 이름을 구성합니다. 다른 플랫폼의 경우, 현재 사용자의 홈 폴더만 알면 파일의 전체 경로를 구성할 수 있습니다.

다음으로 os.path.join() 함수를 이용하여 이 세 문자열을 하나의 경로 문자열로 합칩니다. 이때 문자열을 단순히 합치지 않고 특별한 함수를 이용하여 합친 것은 합쳐진 최종 경로가 현재 사용하는 운영 체제의 형식에 맞는 형태로 생성되도록 확실하게 하기 위함입니다.

이제 logging 모듈을 이용하여 필요한 기록 사항을 지정한 파일에 정해진 형식대로 기록합니다.

마지막으로 각 메시지가 디버깅 정보인지, 단순 정보인지, 경고나 혹은 중요한 메시지인지 등에 따라 다르게 저장합니다. 이 프로그램이 실행되어도 화면에는 무엇도 출력하지 않지만, 이 파일의 내용을 확인하면 프로그램이 실행되고 있고 어떤 일이 일어났는지 알 수 있습니다.


17.3 '금주의 모듈' 시리즈

파이썬 표준 라이브러리에는 다음과 같은 모듈이 많이 있습니다. 디버깅 모듈명령행 옵션 관련 모듈정규 표현식 모듈 등입니다.

파이썬 표준 라이브러리에 대해 좀 더 알 수 있는 방법은 Doug Hellmann이 쓴 금주의 파이썬 모듈 시리즈를 읽는 것입니다(이것은  으로도 읽을 수 있습니다). 또 다른 좋은 방법은 파이썬 문서를 읽는 것입니다.


17.4 요약

지금까지 파이썬 표준 라이브러리에 있는 많은 모듈의 몇몇 기능에 대해 살펴봤습니다. 이에 만족하지 말고, 파이썬 표준 라이브러리 문서를 읽고 사용 가능한 모든 모듈에 대한 정보를 알아보기 바랍니다.

다음으로는, 우리의 파이썬 여정을 좀 더 완전하게 해 줄 파이썬의 여러 장점에 대해 알아봅니다.