본문 바로가기

Programming/Python

표준 라이브러리

파이썬 표준 라이브러리는 파이썬을 설치할 때 항상 함께 설치되는 많은 수의 유용한 모듈들을 말한다.

파이썬 표준 라이브러리에 익숙해지면 이를 이용해 해결할 수 있는 많은 문제들을 좀 더 빠르고 쉽게 해결할 수 있다.


지금부터 표준 라이브러리에 포함된 많은 모듈 중에서 자주 사용되는 몇가지 모듈에 대해 알아볼 것이다.


sys 모듈

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


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

help(sys)를 쳐보면 sys에 대해 알수있다.



    

 argv -- command line arguments; argv[0] is the script pathname if known



 version_info -- version information as a named tuple

라고 나온다.


sys.version_info

sys.version_info(major=3, minor=6, micro=1, releaselevel='final', serial=0)


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



logging 모듈

우리가 디버그를 할 때 중간에 변수들의 내용 등을 출력하고 싶거나 혹은 실행시 중요한 메세지를 어딘가에 저장해
두게 하여 여러분의 프로그램이 제대로 실행되고 있는 지 확인하고 싶을 때 어떻게 하면 좋을까?
어떻게 이러한 메세지들을 " 어딘가에 저장해 " 둘 수 있을까? 이를 위해 logging 모듈을 이용한다.


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")

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


먼저 platform.platform()이 반환해주는 문자열을 통해 현재 사용중인 운영 체제가 무엇인지 알아온다.
이제 윈도우 플랫폼인 경우 홈 드라이브 및 홈 폴더를 알아내어 정보를 저장해 둘 파일 이름을 구성한다.

다음으로 os.path.join() 함수를 이용하여 이 세 문자열을 하나의 경로 문자열로 합쳐준다.
이때 문자열을 단순히 합치지 않고 이러한 특별한 함수를 이용하여 함수를 합쳐 준 것은 합쳐진 최종 경로가 현재 사용중인 운영 체제의 형식에 맞는 형태로 생성되도록 확실하게 해 두기 위함이다.
이제 logging 모듈을 이용하여 필요한 기록 사항들을 지정해준 파일에 정해준 형식대로 기록한다.

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

'Programming > Python' 카테고리의 다른 글

__str__ 과 __repr__  (0) 2019.10.03
Linked List  (0) 2019.10.02
예외 처리  (0) 2017.11.13
입력과 출력  (0) 2017.11.13
상속  (0) 2017.11.13