[Python] 라이브러리

ㅎㅎ·2021년 5월 25일
0

Python

목록 보기
21/27




📌 라이브러리

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

- sys 모듈

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

1) sys.argv : 명령 행에서 인수 전달하기

# 디렉토리(mymod) 안에 argv_test.py파일을 만든다. 
# argv_test.py
import sys
print(sys.argv)

#실행(디렉토리 mymod에서)
>>> python argv_test.py you need python
['argv_test.py', 'you', 'need', 'python']
>>> python argv_test.py hi im gildong
['argv_test.py', 'hi', 'im', 'gildong']

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

2) sys.exit : 강제로 스크립트 종료하기

  • sys.exitctrl+z,ctrl+d를 눌러서 대화형 인터프리터를 종료하는 것과 같은 기능을 한다. 즉 프로그램 파일 안에서 프로그램을 중단시킨다.

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

  • sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 즉 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.
>>> import sys
>>> sys.path
['', 'C:\\Windows\\SYSTEM32\\python37.zip', 'c:\\Python37\\DLLs', 
'c:\\Python37\\lib', 'c:\\Python37', 'c:\\Python37\\lib\\site-packages']
# path_append.py
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) #저장하기
>>> f.close()
# pickle.dump로 저장한 파일을 pickle.load를 사용해서 원래 있던 딕셔너리 객체(data)상태 그대로 불러오기 
>>> import pickle
>>> f = open("test.txt", 'rb')
>>> data = pickle.load(f) # 불러오기
>>> print(data)
{2:'you need', 1:'python'}

- os(operating system) 모듈

  • os 모듈은 파이썬에서 환경 변수나 디렉터리, 파일 등의 os(운영체제) 자원을 제어할수 있게해준다.

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

>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': … 생략 …}) #딕셔너리 형태

>>> os.environ["PATH"]
# 객체가 딕셔너리이기 때문에 이런 형태로 필요한 환경변수를 가져올 수 있다. 

2) os.chdir : 디렉토리 위치 변경하기

>>>import os
>>> os.chdir("C:\WINDOWS")

3) os.getcwd : 디렉토리 위치 돌려받기

>>> import os
>>> os.getcwd()
'C:\WINDOWS'

4)os.system : 시스템 명령어 호출하기

  • os.system("명령어")시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출해 실행할 수있다.
>>> import os
>>> os.system("dir") #dir을 실행 

5)os.popen : 실행한 시스템 명령어의 결괏값 돌려받기

  • os.popen은 시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.
>>> import os
>>> f = os.popen("ls") #터미널에서 dir은 안됨
>>> print(f.read()) # 읽어 들인 파일 객체 내용 확인

6) 그 외 os관련 함수

  • os.mkdir : 디렉토리 생성
  • os.rmdir : 디레토리 삭제
  • os.unlink : 파일 지우기
  • os.rename(src,dst) : src라는 이름의 파일을 dst라는 이름으로 바꾸기
  • 그 외 자세한 설명

- shutil 모듈

  • shutill 모듈은 파일을 복사해준다.

vim src.txt # 파일 만들기
vim dst.txt

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

#확인 올ㅋ
cat dst.txt 
거북목에서 벗어나자

➡️ src.txt 파일과 동일한 내용의 파일이 dst.txt로 복사된다.(단,dst가 디렉토리 이름이라면 src라는 파일 이름으로 dst디렉토리에 복사하고, 동일한 파일 이름이 있을 경우에는 덮어쓴다.)


- glob 모듈

  • glob(filepath) 모듈 은 디렉토리안에 있는 파일들을 읽어서 리스트로 만들어돌려준다. 이때 메타문자 (*,?)등을 사용해 원하는 파일만 읽을 수 있다.
>>> import glob
>>> glob.glob("c:/doit/mark*") #mark로 시작하는 파일을 모두 찾아서 돌려줌
['c:/doit\\marks1.py', 'c:/doit\\marks2.py', 'c:/doit\\marks3.py']

>>>import glob
>>> glob.glob("*") # 현재 디렉토리의 전체 파일 가져오기 
['src.txt', 'argv_test.py', 'pp.py', 'test.txt', 'dst.txt']

>>> from glob import glob 
>>> glob("*.txt") # 현재 디렉토리의 txt확장자 파일만 가져오기
['src.txt', 'test.txt', 'dst.txt']

- tempfile 모듈

  • tempfil 모듈은 파일을 임시로 만들어서 사용할 때 유용하다. tempfile.mkstemp()는 중복되지 않는 임시 파일의 이름을 무작위로 돌려준다. tempfile.TemporaryFile()는 임시 저장 공간으로 사용할 파일 객체를 돌려준다. 이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 갖는다. 그리고 f.close()가 호출되면 자동으로 파일 객체는 사라진다.
>>> import tempfile
>>> filename = tempfile.mkstemp() #중복되지 않는 임시 파일의 이름(무작위)
>>> filename
'C:\WINDOWS\TEMP\~-275151-0'

>>> import tempfile
>>> f = tempfile.TemporaryFile() # 임시 저장 공간으로 사용할 파일 객체
>>> f.close() # 자동으로 사라짐

- time 모듈

  • 시간과 관련된 모듈
  • time.time : UTC를 사용해 현재 시간을 실수 형태로 돌려준다.(1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초단위를 보여줌).
>>> import time
>>> time.time()
1621924669.673884
  • time.localtime :time.time()이 돌려준 실수 값을 사용해 연도,월,일,시,분,초의 형태로 바꿔서 돌려준다.
>>> time.localtime(time.time())
time.struct_time(tm_year=2021, tm_mon=5, tm_mday=25, tm_hour=15, tm_min=39, tm_sec=8, tm_wday=1, tm_yday=145, tm_isdst=0)
  • time.asctime :time.localtime에 의해 반환된 튜플 형태릐 값을 인수로 받아 알아보기 쉬운 형태로 돌려준다.
>>> time.asctime(time.localtime(time.time()))
'Tue May 25 15:40:29 2021'
  • time.ctime: 위의 time.asctime(time.localtime(time.time()))을 간편하게 표시할 수있다. (asctime과 다른 점은 ctime은 항상 현재 시간만 돌려준다.)
>>> time.ctime()
'Tue May 25 15:41:36 2021'
  • time.strftime : 시간에 관계된 것을 세밀하게 표현하는 여러가지 포맷코드를 제공한다. 다양한 포맷 코드
>>> time.strftime("출력할 형식 포맷 코드",time.localtime(time.time()))
'출력할 형식 포맷 코드'
>>> time.strftime("%a",time.localtime(time.time()))
'Tue'
>>> time.strftime("%A",time.localtime(time.time()))
'Tuesday'
>>> time.strftime("%Z",time.localtime(time.time()))
'KST'
  • time.sleep: 이 함수는 주로 루프 안에서 사용한다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.
import time
for i in range(10):
    print(i)
    time.sleep(1) # 1초 간격으로 숫자 출력

- calendar 모듈

  • 파이썬에서 달력을 볼수 있게 해주는 모듈이다.
>>> import calendar
>>> calendar.calendar(2021) # 그 해의 전체달력
>>> calendar.prcal(2021) # 그 해의 전체달력 (동일)

>>> calendar.prmonth(2021,5) # 년도, 월

>>> calendar.weekday(2021, 12, 31) # 해당하는 요일을 돌려줌
4 # 0(월)~6(일) 
>>> calendar.monthrange(2021,12) # 그 달 1일이  무슨 요일인지, 그 달이 며칠까지인지
(2, 31) # 튜플

- random 모듈

  • random 모듈은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.
>>> import random
>>> random.random() # 0.0 ~ 1.0 사이의 수 중에 난수를 돌려줌.
0.223564959540429 

>>> random.randint(1,10) # 1부터 10 사이의 정수 중에 난수를 돌려줌
4

>>> data = [1,3,5,7,9]
>>> random.shuffle(data) #리스트의 항목을 무작위로 섞고 싶을때
>>> data
[1, 7, 5, 3, 9]
  • 또 다른 예)
import random

def random_pop(data):
    number = random.randint(0, len(data)-1) #무작위로 하나 꺼내서 돌려줌
    return data.pop(number)  # 그리고 pop에 의해 사라짐

if __name__ == "__main__": # !!! 
    data = [1, 2, 3, 4, 5]
    while data: 
        print(random_pop(data))
#위의 randim_pop함수를 더 직관적으로 만들었을 때,
def random_pop(data):
    number = random.choice(data) # 입력으로 받은 리스트에서 하나를 선택해 돌려줌.
    data.remove(number) # 그 숫자를 삭제
    return number

➡️ 실행할 때마다 다른 값을 돌려준다.


- webbrowser 모듈

  • 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다.
>>> import webbrowser
>>> webbrowser.open("http://google.com") # 구글로 이동
True
>>> webbrowser.open_new("http://google.com") #이미 브라우저가 실행된 상태더라고 새로운 창으로 해당 주소가 열림
True

- threading 모듈


📌 모듈, 패키지, 라이브러리의 차이점

  • 모듈은 함수,변수,클래스와 같은 기능이 구현되있는 .py 파이썬 파일을 말함.

  • 패키지는 여러 모듈을 묶어 놓은 것. 패키지라는 것을 알려주기 위해 파일안에 __init__.py파일이 존재해야함.

  • 라이브러리는 여러 모듈과 패지키의 모음이며 두 가지로 나뉜다.

    • 표준라이브러리는 파이썬에서 기본으로 제공하는 라이브러리이며 ex) '모든 표준 라이브러리 모음',
    • 외부 라이브러리는 공식이 아닌 외부에서 개발한 모듈과 패키지의 묶믐을 말함. ex) -Pandas, NumPy, Matplotilb

0개의 댓글