라이브러리

honeyricecake·2022년 6월 30일
0

파이썬

목록 보기
21/26

라이브러리는 도서관이라는 뜻 그대로 원하는 정보를 찾아보는 곳이다.

모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다.

그러기 위해 어떤 라이브러리가 존재하고 어떻게 사용하는지 알아야 한다.

자주 사용되고 꼭 알아두면 좋은 라이브러리를 중심으로 하나씩 살펴보자.

(파이썬 라이브러리는 파이썬을 설치할 때 자동으로 컴퓨터에 설치한다.)

sys

sys 모듈은 파이썬 인터프리터가 제공하는, 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.

명령 행에서 인수 전달하기 - sys.argv

명령 프롬프트 창에서 소스파일 이름 뒤에 또 다른 값을 함께 넣어주면 sys.argv리스트에 그 값이 추가된다.

명령 프롬프트 창에서 Mymod 디렉터리로 들어간 뒤 다음과 같이 실행해보자.

C:/doit/Mymod>python argv_test.py you need python
['argv_test.py', 'you', 'need', 'python']

python 명령어 뒤의 모든 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트의 요소가 된다.

강제로 스크립트 종료하기 - sys.exit()

대화형 인터프리터를 종료하며, 프로그램 파일 안에서 사용하면 프로그램을 중단시킨다.

자신이 만든 모듈 불러와 사용하기 - sys.path

sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 즉, 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.

import sys
sys.path.append("C:/doit/mymod")

위와 같이 파이썬 프로그램 파일에서 sys.path.append를 사용해 경로 이름을 추가할 수 있다. 이렇게 하고 난 후에는 C:/doit/Mymod 디렉터리에 있는 파이썬 모듈을 불러와서 사용할 수 있다.

pickle

객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.

다음 예는 pickle 모듈의 dump함수를 사용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여준다.

import pickle

f = open("test.txt", "wb")
data = {1:'python', 2:'you need'}
pickle.dump(data, f)  # data를 f에 dump(저장)
f.close

다음은 pickle.dump로 저장한 파일을 pickle.load를 사용해서 원래 있던 딕셔너리 객체 상태 그대로 불러오는 예이다.

import pickle
f = open("test.txt", "rb")
data = pickle.load(f)

os

os모듈은 환경 변수나 디렉터리, 파일 등의 OS자원을 제어할 수 있게 해주는 모듈이다.

내 시스템의 환경 변수값을 알고 싶을 때 - os.environ

시스템은 제각기 다른 환경 변수 값을 가지고 있는데 os.environ은 현재 지스템의 환경 변수값을 보여준다.

(환경 변수란 프로세스가 컴퓨터에 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다.)

os.environ은 환경변수에 대한 정보를 딕셔너리 객체로 리턴한다.
자세히 보면 여러가지 유용한 정보를 찾을 수 있다.

돌려받은 객체가 딕셔너리이기 때문에 다음과 같이 호출할 수 있다.

os.environ['PATH']

이렇게 하면 시스템의 PATH환경변수를 알 수 있다.

디엑터리 위치 변경하기

os.chdir (change directory)

디렉터리 위치 리턴받기 - os.getcwd

시스템 명령어 호출하기 os.system("명령어")

이런 식으로 시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수도 있다.

실행한 시스템 명령어의 결괏값 리턴받기 - os.popen

시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려받는다.
f = os.popen("dir")

shutil

파일을 복사해주는 파이썬 모듈이다

만약 dst가 딝터리 이름이라면 src라는 파일 이름으로 dst 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.

import shutil
shutil.copy("src.txt",dst.txt)

위 예를 실행해보면 src.txt와 동일한 내용의 파일이 dst.txt로 복사되는 것을 확인할 수 있다.

glob

가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다보면 특정 디렉터리에 있는 파일이름 모두를 알아야 할 때가 있다.

이럴 때 사용하는 모듈이 바로 glob이다.

디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)

glob 모듈은 디렉터리 안의 파일들을 읽어서 돌려준다. *, ? 등 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.

다음은 C:/doit 디렉터리에 있는 파일 중 이름이 mark로 시작하는 파일을 모두 찾아서 읽어들이는 예이다.

import glob
glob.glob("c:/doit/mark*")  # '*' 메타문자 이용

tempfile

파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다. tempfile.mkstemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 돌려준다. -> 경로 및 파일명을 문자열로 리턴

tempfile.TemporaryFile()은 임시 저장 공간으로 사용할 파일 객체를 돌려준다. 이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 갖는다. f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.

time

시간과 관련된 time모듈에는 함수가 굉장히 많다.

그 중 가장 유용한 몇가지만 알아보자.

time.time

time.time()은 UTC(Universal Time Coordinated 협정 세계 표준시)를 사용하여 현재 시간을 실수 형태로 돌려주는 함수이다. 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위(실수)로 돌려준다.

time.localtime

time.localtime은 time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분, 초, ... 의 형태로 바꾸어 주는 함수이다.
즉, 정확한 시간을 알고 싶다면

time.localtime(time.time()) 이 맞다.

time.asctime

위 time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 돌려주는 함수이다.

time.ctime

time.asctime(time.localtime(time.time()))은 time.ctime()을 사용해 간편하게 표시할 수 있다. asctime과 다른 점은 ctime은 항상 현재 시간만을 돌려준다는 점이다.

그래서 ctime이다. (currenttime)
asctime을 통해 현재 시간이 아닌 시간을 출력하는 방법은 time.time에 다른 실수를 대입하는 것이다.

time.strtime은 시간에 관계된 것을 세밀하게 표현하는 여러가지 포맷코드를 제공한다.

time.sleep

time.sleep 함수는 주로 루프 안에서 많이 사용한다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.

자바의 thread.sleep()과 같은 역할을 한다.

calendar

파이썬에서 달력을 볼 수 있게 해주는 모듈이다.

calendar.calendar(연도)로 사용하면 그 해의 전체달력을 볼수 있다.

calendar.prcal(연도)를 사용해도 위와 똑같은 결괏값을 얻을 수 있다.

calendar.prmonth(연도,월)을 통해 어느 달의 달력만 볼 수 있다.

calendar.weekday(연도, 월, 일)은 요일을 리턴한다.
0~6을 리턴하고 이는 각각 월~일요일이다.

calendar.monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는지를 튜플 형태로 돌려준다.

random

random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.

random.random() 은 자바와 같이 0.0에서 1.0 사이의 실수중에서 난수값을 돌려준다. (0.0이상 1.0이하)

다음 예는 1에서 10사이의 정수 중에서 난숫값을 돌려준다.

random.readint(1,10) (1 이상 10이하)

이를 통해 random으로 리스트의 요소 중 하나를 꺼내는 함수를 만들 수 있다.

import random
def random_pop(data):
    number = random.randint(0, len(data)-1)
    return data.pop(number)

이는 random모듈의 choice함수를 통해 좀 더 직관적으로 만들 수 있다.

def random_pop(data):
    number = random.choice(data)  # data배열에서 랜덤으로 꺼내서
    data.remove(number)  # 꺼낸 수를 제거
    return number

random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다.

리스트의 항목을 무작위로 섞고 싶을 때는 random.shuffle 함수를 사용하면 된다.

webbrowser

webbrowser는 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다. 다음 예제는 웹 브라우저를 자동으로 실행하고 해당 URL인 google.com으로 가게 해 준다.

import webbrowser
webbrowser.open("http://google.com")

webbrowser의 open 함수는 웹 브라우저가 이미 실행된 상태라면 입력 주소로 이동한다. 만약 웹 브라우저가 실행되지 않은 상태라면 새로 웹 브라우저를 실행한 후 해당 주소로 이동한다.

open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리게 한다.

0개의 댓글