단도직입 파이썬(Python) – 라이브러리(Library)

전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아 놓은 것이 바로 파이썬 표준 라이브러리(Python Standard Library)입니다. 모든 내장함수를 외울 필요가 없는 것과 마찬가지로 모든 라이브러리를 알 필요는 없지만 어떤 일을 할 때 어떤 라이브러리가 사용되는지 정도만 파악하면 됩니다.
자주 사용되고 알아 두면 좋은 파이썬 표준 라이브러리에 대해 알아보겠습니다.
sys 모듈
sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 하는 모듈입니다.

python 실행 후 모든 문자열들이 공백을 기준으로 나뉘어 sys.argv 리스트의 요소가 되는 것을 알 수 있습니다.
>>> import sys
>>> sys.exit()
sys.exit()는 강제로 스크립트를 종료할 수 있습니다.(Ctrl + z와 동일한 기능입니다.)
sys.path는 나의 파이썬 모듈들의 저장 위치를 나타냅니다. 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있습니다.
>>> import sys
>>> sys.path
['', 'C:\\Users\\JH_Baik\\AppData\\Local\\Programs\\Python\\Python38-32\\python38.zip', (중간 생략) 'C:\\Users\\JH_Baik\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages']
위의 예에서 첫 번째 ' '는 현재 디렉터리를 뜻합니다.
sys.path.append('디렉터리')으로 모듈이 저장된 위치를 추가할 수 있습니다.

pickle 모듈
pickle은 객체의 형태를 유지하며 파일에 저장하고 불러올 수 있게 하는 모듈입니다.

dump 함수를 사용하여 딕셔너리 형태의 자료를 test.txt에 기록하고, load 함수를 통해 불러와 출력하는 것을 볼 수 있습니다. 딕셔너리 객체 외 어떤 자료형이든 저장하고 불러올 수 있습니다.
os 모듈
os 모듈은 환경 변수, 디렉터리, 파일 등 os 자원을 제어할 수 있게 해주는 모듈입니다.
>>> import os
>>> os.environ
environ({'ALLUSERSPROFILE': 'C:\\ProgramData', (중간 생략) 'LANG': 'ko_KR.UTF-8', 'COLORTERM': 'truecolor'})
현재 본인의 시스템 환경 값을 딕셔너리 형태로 화면에 왕창 뿌려줍니다.
당장은 사용하지 않겠지만 알아두면 유용한 os 함수 몇 개를 더 알아봅니다.
os.chdir( ) |
디렉터리 위치 변경
|
os.getcwd( )
|
현재 디렉터리 위치를 리턴
|
os.system( )
|
시스템 자체의 명령어를 호출함
|
os.popen( )
|
시스템 명령어 실행한 결과를 읽기 형태의 파일 객체로 리턴
|

예전 MS - DOS 명령어들이 막 생각나는군요.^^
이 밖에도 유용한 os 함수는 아래와 같습니다.
os.mkdir(디렉터리)
|
디렉터리 생성
|
os.rmdir(디렉터리)
|
디렉터리 삭제(폴더가 비어 있어야 함!)
|
os.unlink(파일명)
|
파일의 삭제
|
os.rename(A, B)
|
파일명 A을 파일명 B로 변경
|
time 모듈에는 함수가 아주 많으며 그중 유용한 함수 몇 가지를 알아봅니다. (예전 네이버 검색광고 API를 사용할 때도 timestamp를 ID, secret key와 함께 보내야 결과를 받을 수 있었으며, 아래 링크될 구글 이미지 웹 크롤러에도 time 모듈을 사용하는 부분이 있습니다. 많이 사용되는 모듈과 함수입니다.)
time.time()는 UTC(협정 세계표준시)를 사용하며 1970년 1월 1일 0시 0분 0초를 기준하여 현재 시간을 실수 형태로 돌려줍니다.
>>> import time
>>> time.time()
1620032066.378297
time.localtime은 time.time()이 돌려준 값을 이용해서 연, 월, 일, 시, 분, 초… 등의 형태로 돌려줍니다.
>>> time.localtime(time.time())
time.struct_time(tm_year=2021, tm_mon=5, tm_mday=3, tm_hour=18, tm_min=1, tm_sec=0, tm_wday=0, tm_yday=123, tm_isdst=0)
time.asctime()은 time.localtime()에 의해 반환된 큐플 형태의 값을 좀 더 보기 쉬운 형태의 문자열로 돌려줍니다.
>>> time.asctime(time.localtime(time.time()))
'Mon May 3 18:07:18 2021'
time.asctime(time.localtime(time.time()))를 간편하게 ctime() 함수를 사용할 수 있습니다. 하지만 ctime()은 항상 현재 시간만을 돌려줍니다.
>>> time.ctime()
'Mon May 3 18:07:24 2021'
이외에도 time 모듈 관련 함수들이 많이 있습니다.(time.strftime, time.sleep 등)
random 모듈
random은 난수를 발생시키는 모듈입니다.
random.random()은 0.0~1.0 사이에서 난수를 발생시켜 줍니다.
>>> import random
>>> random.random()
0.6134652928106256
randint(a, b)는 a에서 b사이의 정수 중에서 난수를 발생시켜 줍니다.
>>> random.randint(1,10)
9
>>> random.randint(10,100)
75
아마 로또 복권 예상번호도 randint() 함수를 사용하여 만들지 않을까요?^^
지금까지 언급된 모듈 외에도 유용한 모듈을 파이썬 공식 홈페이지에서 자세히 알려주고 있습니다.