파이썬 기초 4-4. 라이브러리

MANBOKWAK·2024년 1월 18일

파이썬 기초

목록 보기
11/15

라이브러리

  • 전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아놓은것

  • 모든 라이브러리를 아는것은 불가능 -> 필요한 라이브러리만 알고 그때그때 새로운것에 대해 공부하면됨

  • 오늘은 자주 사용되고 필수적인 라이브러리에 대해 알아볼것이다

1. sys 모듈

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

sys.argv

  • 명령행에서 인수를 전달할 수 있음
# test.py
import sys

print(sys.argv)
# 명령 프롬프트 창
python app.py abc python is easy

출력 결과

  • 명령창 cmd창이나 또는 terminal에서 위와 같이 입력하면 app.py 뒤에 값들이 sys.argv리스트에 그 값들이 추가됨
  • python 명령어 뒤에 모든것들이 공백을 기준으로 분리되어서 sys.argv 리스트의 요소가 됨

② sys.exit

  • 강제로 스크립트를 종료하는 기능을 수행하는 함수

  • Ctrl + ZCtrl + D를 눌러서 스크립트를 종료하는 것과 같은 기능을 함

  • 프로그램 파일안에서 사용하면 프로그램을 종료시킴

③ sys.path

  • 파이썬 모듈이들이 저장되어 있는 위치를 알려줌

  • 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있음

import sys

sys.path.append("study/test")
print(sys.path)
  • sys.path.append를 사용해 경로 이름을 추가할 수 있음

  • 추가한 경로에 있는 파이썬 모듈을 불러와서 사용할 수 있음


2. pickle

  • 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈
# 객체인 data를 그대로 파일에 저장하는 Example
import pickle

f = open('test.txt', 'wb')
data = {1: 'python', 2: 'is', 3: 'good'}
pickle.dump(data, f)
f.close()
# 저장한 파일을 pickle.load로 불러오는 Example
import pickle

f = open('test.txt', 'rb')
data = pickle.load(f)
print(data)
f.close()

출력 화면

  • pickle객체를 이용하면 파일에 저장또는 파일을 읽을때 바이너리 코드를 읽어오는 것이므로 쓰기 모드일때는 'wb'로 읽기모드 일때는 'rb'로 모드를 지정해줘야함

3. OS

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

① os.environ

  • 내 시스템의 환경 변수 값을 알고싶을때 사용하는 함수

import os

print(os.environ)

print(os.environ['PATH'])

출력화면

  • 환경 변수에 대한 정보를 딕셔너리 객체로 반환해줌

  • 자세히보면 여러가지 유용한 정보를 찾을 수 있다 (난 아직 모르겠다..)

  • 반환값이 딕셔너리이기 때문에 environ['PATH'] 으로 경로값을 얻을 수 있다

② os.chdir 와 os.getcwd

  • os.chdir()을 사용하면 현재 디렉토리의 위치를 변경할 수 있음

  • os.getcwd()를 사용하면 현재 내 디렉토리의 위치를 반환해줌

import os

os.chdir('C:\\Users')
print(os.getcwd())

출력결과

  • 현재 디렉토리의 위치를 os.chdir()을 이용해 C:\\Users로 변경한 후 제대로 변경 됐는지 확인하기 위해서 os.getcwd()를 사용해 확인해보는 코드

③ os.system과 os.popen

  • os.system()은시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 때 사용하는 함수

  • os.popen()은 시스템 명령어를 실행한 결과값을 읽기 모드 형태의 객체파일로 돌려주는 함수

# os.system Example
import os

os.system("dir")

출력결과

  • 인코딩 문제로 글자가 깨지지만 명령어는 정상적으로 실행되는것을 확인할 수 있음
# os.popen Example
import os

#os.system("dir")
f= os.popen("dir")

print(f.read())

출력결과


4. shutil

  • 파일을 복사해주는 모듈

  • 파일 복사를 위해서는 shutil.copy()함수를 사용

import shutil

shutil.copyfile('test.txt', 'test_copy.txt')
  • test.txt파일을 복사해서 test_copy.txt파일에 붙여넣기하는 코드

5. glod

  • 특정 디렉토리에 있는 파일 이름을 모두 알고싶을때 사용하는 모듈

①. glod(pathname)

  • 디렉토리에 있는 파일들을 리스트로 만드는 함수

  • glod.glod()형식으로 사용

  • 디렉토리안 안의 파일들을 읽어서 반환해주는데 *,? 등 메타 문자를 써서 원하는 파일만 읽어들일 수 있음

# glod Example
import glob

print(glob.glob('*.py'))

출력결과

  • 현재 위치한 디렉토리에서 .py확장자를 가진 모든 파일을 읽고 출력하는 코드

6.tempfile

  • 파일을 임시로 만들어서 사용할 때 유용한 모듈

  • tempfile.mkstemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 반환해줌

# tmepfile Example
import tempfile

filename = tempfile.mktemp()
print(filename)

출력결과

  • 파일의 이름을 무작위로 만들어서 반환해줌
import tempfile

f = tempfile.TemporaryFile()
f.close()
  • tempfile.TemporaryFile()은 임시 저장 공간으로 사용할 파일 객체를 반환해줌

  • 이 반환된 파일은 기본적으로 'wb'모드를 가지며, f.close가 호출되면 파일 객체는 자동으로 사라짐


7.time

  • 시간과 관련된 모듈

  • 관련된 함수가 엄청 많음 (대표적인거 몇개만 알아보자)

① time.time

  • UTC를 사용하여 현재 시간을 실수형태로 돌려주는 함수

  • 1970/1/1 0시 0분 0초를 기준으로 지난 시간을 초단위로 돌려줌

import time

print(time.time())

출력결과

② time.localtime

  • time.localtime()은 time.time()으로 얻은 시간을 연도, 월, 일, 시, 분,초 의 형태로 바꾸어주는 함수
import time

print(time.localtime(time.time()))

출력결과

③ time.asctime

  • time.asctime은 time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 반환해주는 함수
import time

print(time.asctime(time.localtime(time.time())))

출력결과

④ time.ctime

  • time.ctime()을 사용해 time.asctime(time.localtime(time.time())) 을 간편하게 표현할 수 있음 하지만 ctime은 항상 현재 시간만을 반환함
import time

print(time.ctime())

출력결과

⑤ time.strftime

  • time.strftime('출력할 형식 포맷 코드',time.localtime(time.time())) ) 형식으로 사용

  • strftime 함수는 시간에 관계된 것을 세밀하게 표현하는 여러 가지 포맷 코드를 제공

  • 아래는 시간과 관련된 포맷코드 임

포맷코드설명
%a요일의 줄임말Mon
%A요일Monday
%b달의 줄임말Jan
%BJanuary
%c날짜와 시간을 출력함.Thu May 25 10:13:52 2023
%d일(day)[01,31]
%H시간(hour): 24시간 출력 형태[00,23]
%I시간(hour): 12시간 출력 형태[01,12]
%j1년 중 누적 날짜[001,366]
%m[01,12]
%M[01,59]
%pAM or PMAM
%S[00,59]
%U1년 중 누적 주(일요일 시작)[00,53]
%w숫자로 된 요일[0(일), 6(토)]
%W1년 중 누적 주(월요일 시작)[00,53]
%x현재 설정된 지역에 기반한 날짜 출력05/25/23
%X현재 설정된 지역에 기반한 시간 출력17:22:21
%Y연도 출력2023
%Z시간대 출력대한민국 표준시
%%문자 %%
%y세기 부분을 제외한 연도 출력01
import time

print(time.strftime('%x', time.localtime(time.time())))

print(time.strftime('%c', time.localtime(time.time())))

출력결과

⑥ time.sleep

  • 주로 루프 안에서 많이 사용됨

  • 일정 시간 간격을 두고 루프를 실행할 수 있음

import time

for i in range(10):
    print(i)
    time.sleep(1)

출력결과

  • 위 코드는 1초 간격으로 0부터 9까지 숫자를 출력하는 코드

  • sleep()의 인수는 실수형태로 사용가능 1이면 1초 0.5이면 0.5초를 의미함


8. calendar

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

  • calendar.calendar(연도)로 사용하면 그해의 전체 달력을 확인할 수 있음 calendar.prcal(연도)도 동일한 결과를 얻음

import calendar

print(calendar.calendar(2024))

출력결과

  • 밑에부분은 크기가 너무 커서 짤렷음

①. calendar.prmonth()

  • calendar.prmonth(year,month)를 하면 해당 연월의 달력을 확인할 수 있음
import calendar

print(calendar.prmonth(2024,1))

출력결과

②. calendar.weekday

  • weekday(year, month, day)는 날짜에 해당하는 정보를 반환해줌

  • 월요일 - 0, 화요일 - 1, 수요일 - 2, 목요일 - 3, 금요일 - 4, 토요일 - 5, 일요일 - 6 으로 반환됨

import calendar

print(calendar.weekday(2024,1,18))

출력결과

  • 이글을 쓰고 있는 시점인 2024/01/18은 목요일이므로 3이 반환됨

③. calendart.monthrange

  • monthrange(year, month, day)는 해당 달이 며칠까지 있는지 튜플로 반환해줌

  • 튜플에서 첫 인덱스는 해당 달의 1일의 요일이고 두번재 인덱스는 마지막 일이다

import calendar

print(calendar.monthrange(2024,2))

출력결과

  • 2024년의 2월 1일은 목요일므로 3을 반환하고, 윤년이라 29일까지 있으므로 29를 반환 한것을 확인할 수 있음

9.random

  • 난수를 발생시키는 모듈

  • random과 randint에 대해 알아보자

import random

print(random.random())
print(random.randint(1,100))

출력결과

  • random.random()은 0.0에서 1.0 사이의 실수 중에서 난수 값을 반환

  • randon.randint(start, end) 은 strt와 end사이의 정수중 난수값을 반환

random.shuffle

  • 리스트의 값을 무작위로 셔플 해주는 함수
import random

a =[1,2,3,4,5]
random.shuffle(a)
print(a)

출력결과


10. webbrowser

  • 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈
import webbrowser

webbrowser.open('http://www.google.com')

출력결과

  • 위 코드는 웹 브라우저를 자동으로 실행하고 입력한 주소로 이동하게 한다

  • 웹 브라우저가 이미 실행중이면 입력주소로 이동하고, 실행중이지 않으면 웹 브라우저를 실행해 이동한다

profile
Backend/ DevOps를 지망하는 곽희상입니다.

0개의 댓글