본문 바로가기
파이썬(Python)/파이썬(Python) 기초

파이썬(Python) 5장 추가적인 기본 사항 - 6. 라이브러리

by 인생즐겜러 2022. 7. 12.
728x90
반응형

1. sys

2. pickle

3. os

4. shutil

5. glob

6. tempfile

7. time

8. calendar

9. random

10. webbrowser

 

 

 

 


 

 

 

 

 

라이브러리란?

 

파이썬 개발자들이 재사용을 위해 유용한 함수나 클래스들을 모아 놓은 것이 파이썬 라이브러리이다.

파이썬을 설치할 때 자동으로 컴퓨터에 설치되며 파이썬 디렉토리 중 lib에 설치가 된다.

 

 

 

 

 

1. sys

sys는 인터프리터와 관련이 있다. 인터프리터에서 변수와 함수를 직접 제어할 수 있게 한다.

 

인터프린터 : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경

 

 

 

 

 

(1) sys.argv

 

sys.argv에 명령행의 인수들을 리스트 형태로 전달한다.

=> 아직은 왜 필요한 지 잘 모르겠음;;

 

 

 

예를 들어

cmd에서 아래와 같은 test용 파이썬 파일을 원하는 디렉토리에 넣고 저장.

 

import sys
print(sys.argv)

 

이후 해당 디렉토리에서 아래와 같이 cmd에 치면

파이썬 파일명 뒤에 있는 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트에 들어간다.

C:/Lee>python test.py yoyoyo hahaha
['test.py', 'yoyoyo', 'hahaha']

 

 

 

 

 

(2) sys.exit

 

스크립트 강제 종료하기.

ctrl + Z / ctrl + D 처럼 대화형 인터프리터(shell)를 종료하는 것과 같은 기능을 한다.

 

>>> import sys
>>> sys.exit()

 

 

 

 

 

(3) sys.path

 

파이썬 모듈들이 저장되어 있는 위치를 나타내는데,

여기에 있는 모듈은 디렉토리에 상관없이 어디에서나 불러올 수 있다.

 

>>> import sys
>>> sys.path
['', 'C:\\Users\\EZEN\\AppData\\Local\\Programs\\Python\\Python310\\python310.zip',\
'C:\\Users\\EZEN\\AppData\\Local\\Programs\\Python\\Python310\\DLLs',
'C:\\Users\\EZEN\\AppData\\Local\\Programs\\Python\\Python310\\lib',
'C:\\Users\\EZEN\\AppData\\Local\\Programs\\Python\\Python310',
'C:\\Users\\EZEN\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages']

>>>sys.path.append("C:/Lee")	# 원하는 디렉토리를 추가

 

위처럼 path에 원하는 디렉토리를 추가하면 해당 디렉토리에 있는 모든 파일은 어디에서나 불러올 수 있다.

path에서 제일 처음에 있는 ' '  이 친구는 현재 디렉토리를 말한다.

 

 

 

 

 

(4) sys.modules

 

현재 불러와져 있는 모듈들을 딕셔너리 형태로 볼 수 있다.

제일 앞에 sys도 포함 된 것을 볼 수 있다.

 

>>> sys.modules
{'sys': <module 'sys' (built-in)>,
'builtins': <module 'builtins' (built-in)>,
'_frozen_importlib': <module '_frozen_importlib' (frozen)>,
'_imp': <module '_imp' (built-in)>, '_thread': <module '_thread' (built-in)>,
'_warnings': <module '_warnings' (built-in)>, '_weakref': <module '_weakref' (built-in)>,
'_io': <module '_io' (built-in)>, 'marshal': <module 'marshal' (built-in)>,

.......}

 

 

 

 

 


 

 

 

 

 

2. pickle

 

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

이게 왜 필요하냐면, 일반 텍스트는 write나 readline 같은 걸 이용하여 파일을 저장하고 불러올 수 있다.

(write나 readline가 기억이 안나면 아래 페이지 참고)

하지만 객체는 그 방법으로는 파일에 저장 및 불러오기가 안되기 때문에 위와 같은 모듈이 필요하다.

pickle을 이용할 때는 바이너리 처리가 반드시 필요하다. 안하면 에러남 ㅅㄱ

 

 

 

https://0rcticfox.tistory.com/entry/%EB%AF%B8%EC%99%84%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-4%EC%9E%A5-%EC%9E%85%EC%B6%9C%EB%A0%A5-3-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%9D%BD%EA%B3%A0-%EC%93%B0%EA%B8%B0

 

파이썬(Python) 4장 입출력 - 3. 파일 생성 및 읽고 쓰기

1. 파일 생성 2. 파일에 쓰기 3. 파일 읽기 4. 파일에 내용 추가하기 5. 파일 자동 닫기 (with ~ as ~) 1. 파일 생성 파일을 생성하는 명령문 구조는 아래와 같다. 파일 객체 = open(파일 이름, 파일 열기 모

0rcticfox.tistory.com

 

 

 

 

 

(1) pickle.dump( object, file )

 

dump에 인수로 전달한 객체를 객체 상태 그대로 파일에 저장해주는 함수

 

import pickle

data = ("a","bb", "ccc")	# 튜플 객체를 넣고 싶어!
A = open('test.txt', 'wb')
pickle.dump(data,A)
A.close()

 

저장하고자 하는 파일 위치로 가서

파이썬 파일을 만들어서 실행하든 인터프리터에서 바로 실행하든 하면

 

 

이렇게 나온다.

바이너리 형태로 처리해서 넣은거라서 저렇게 이상하게 나오는 거다.

 

 

 

 

 

(2) pickle.load(file)

 

dump로 파일에 저장된 객체들을 원래의 객체 상태로 불러오는 함수다.

 

import pickle

A = open('test.txt', 'rb')
show = pickle.load(A)
A.close()

print(show)



#결과물
('a', 'bb', 'ccc')

 

 

 

 

 


 

 

 

 

 

3. os

 

컴퓨터의 OS 자원을 제어할 수 있게 도와주는 라이브러리다.

파일,디렉토리 추가/제거, 환경변수, 시스템 명령어를 제어할 수 있게 한다.

 

 

 

 

 

(1) os.environ

 

현재 시스템의 환경 변수 값을 보여 준다.

환경 변수에 대한 값은 딕셔너리 객체로 반환한다.

 

>>> import os
>>> os.environ
environ({'ALLUSERSPROFILE': 'C:\\ProgramData',
'ANDROID_HOME': 'C:\\Scoop\\apps\\android-sdk\\current',
'APPDATA': 'C:\\Users\\EZEN\\AppData\\Roaming',
...})

 

아래처럼 딕셔너리 기능 사용도 가능하다.

 

>>> os.environ['PATH']
'C:\\oraclexe\\app\\ ....\\WindowsApps;'

 

 

 

 

 

(2) os.chdir

현재 디렉터리 위치 변경을 한다.

 

>>> os.chdir("C:\Lee")	# 해당 위치로 디렉토리 변경

 

 

 

 

 

(3) os.getcwd

 

현재 자신의 디렉터리 위치를 알려준다. 아주 유용할 듯!!!

 

>>> os.getcwd()
'C:\Lee'

 

 

 

 

 

 

(4) os.system

 

시스템의 유틸리티나 자체의 dos명령어들을 파이썬에서 사용하고 싶을 때 쓴다.

얘도 유용할 듯!!!

 

>>> import os
>>> os.chdir("C:\Lee")
>>> os.system("dir")

 

 

 

 

 

(5) os.popen

 

시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.

=> 실행 결괏값을 변수 담기가 가능하다는 말

 

>>> Leedir = os.popen("dir")	# 명령어의 결과값을 변수에 담아두고
>>> print(Leedir.read())	# 해당 변수를 읽으면 명령어 내용이 쨔잔

 

 

 

 

 

(6) os.mkdir(경로 및 디렉토리명)

 

디렉토리를 만든다. 끗.

 

>>> os.mkdir("C:\LEE\okdk\Ziaco")

 

 

 

 

 

(7) os.rmdir(경로 및 디렉토리명)

 

디렉토리를 지운다.

단, 디렉터리가 비어있어야 삭제가 가능. 끗.

 

>>> os.rmdir("C:\LEE\okdk\Ziaco")

 

 

 

 

 

(8) os.unlink(경로 및 파일명) 

 

파일을 지운다. 끗.

 

>>> os.unlink("C:\LEE\okdk\test.txt")

 

 

 

 

 

(9) os.rename(원본이름, 바꿀이름)

 

파일 이름을 바꾼다. 끗.

 

>>> os.rename("C:\Lee\okdk\Ziaco","C:\Lee\okdk\Dean")

 

 

 

 

 


 

 

 

 

 

4. shutil

 

파일이나 디렉토리를 복사/ 삭제 등의 관리를 할 수 있다.

 

 

(1) shutil.copy(원본명, 복사하는 원하는 파일명) 

 

파일/디렉토리를 복사하는 함수이다.

 

>>> import shutil
>>> shutil.copy("source.txt", "bokboot1.txt")
복붙 파일이 같은 디렉토리에 복사
>>> shutil.copy("source.txt", "C:\Lee\bokboot1.txt")
복붙 파일이 원하는 디렉토리에 복사
>>> shutil.copy("source.txt", "C:\Lee\")
복붙 파일이 원하는 디렉토리에 같은 이름으로 복사

 

 

 

 

 

(2) shutil.rmtree(경로 및 삭제하고자 하는 것의 이름)

 

해당 경로의 디렉토리 및 파일을 모두 지운다.

 

>>> import shutil
>>> shutil.rmtree("C:\Lee") # Lee 디렉토리 및 하위 파일 전부 삭제

 

 

 

 

 


 

 

 

 

 

5. glob

 

디렉토리에 있는 파일들을 읽어서 파일명들을 리스트 화 시킬 때 사용한다.

 

 

 

(1) glob.glob(경로 및 디렉토리명)

 

>>> import glob
>>> glob.glob("C:\Lee\*")
['C:\\Lee\\AWS', 'C:\\Lee\\ch02', 'C:\\Lee\\okdk', 'C:\\Lee\\Python',
'C:\\Lee\\src', 'C:\\Lee\\test.py', 'C:\\Lee\\test.txt', 'C:\\Lee\\테스트파일.txt']

 

위와 같이 결과값은 리스트로 반환한다.

 

 

 

 


 

 

 

 

 

6. tempfile

 

파일을 임시로 만들어서 사용할 때 유용하다.

 

 

 

 

 

(1)  tempfile.mktemp()

 

임시로 중복되지 않는 이름의 파일을 만드는 함수이다.

내가 만드는 디렉토리 위치와는 상관 없이

만들면 임시 파일 저장소에서 임시 파일로 생성된다.

 

>>> import tempfile
>>> filename = tempfile.mkstemp()
>>> os.getcwd()
'C:\\Lee'
>>> print(filename)
(4, 'C:\\Users\\EZEN\\AppData\\Local\\Temp\\tmp2qvmrv_i')

 

mktemp라고 파일의 이름만 임시 생성하는 함수가 있었으나 버전 2.3부터 폐지되었다.

파일과 파일 임시 이름을 한꺼번에 만드는 mkstemp()를 사용해라.

 

 

 

 

 

(2)  tempfile.TemporaryFile(모드)

 

임시적인 저장 공간으로 사용될 파일 객체를 돌려주는 함수이다.

기본적으로 바이너리 쓰기 모드(wb)를 갖는다.

 

>>> filename1 = tempfile.TemporaryFile('w+t')
>>> filename1.write("yo")
2
>>> filename1.close()

 

기본적으로 wb 모드이기 때문에 wt 모드로 바꿔주어야 문자열이 입력이 가능하다.

 

 

 

 

 


 

 

 

 

 

7. time

 

말 그대로 시간과 관련된 모듈이다. 

 

 

 

 

 

(1) time.time()

 

1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초단위로 돌려주는 함수.

UTC(Universal Time Coordinated, 세계 협정 표준시)를 이용해서 실수 형태로 반환.

 

>>> import time
>>> time.time()
1657627839.2969434

 

 

 

 

 

(2) time.localtime()

 

time.time()이 반환한 실수 값을 사용해서 연도, 월, 일, 시, 분, 초의 형태로 바꾸어 주는 함수.
괄호에 time.time() 을 넣든 안넣든 똑같다.

 

>>> time.localtime(time.time())
time.struct_time(tm_year=2022, tm_mon=7, tm_mday=12, tm_hour=21,
tm_min=12, tm_sec=7, tm_wday=1, tm_yday=193, tm_isdst=0)

 

위의 이상한 용어 몇 개를 정리하자면

tm_wday : 요일을 숫자로 표현 (월요일:0~일요일:6)
tm_yday : 1월1일 부터 누적 날짜 (1~366)
tm_isdst : summertime, 일광절약 시간제 (0, 1, -1)

 

 

 

 

 

(3) time.asctime()

 

 time.localtime에서 반환된 튜플 값을 알아보기 쉬운 형태로 돌려주는 함수.

 

>>> time.asctime(time.localtime(time.time()))
'Tue Jul 12 21:16:48 2022'
>>> time.asctime(time.localtime())
'Tue Jul 12 21:16:54 2022'

 

 

 

 

 

(4) time.ctime()

 

time.asctime의 복잡한 문법을 간략하게 사용하는 함수.

asctime와는 다르게 항상 현재 시간만을 돌려준다.

 

>>> time.ctime()
'Tue Jul 12 21:18:48 2022'

 

 

 

 

 

(5) time.strftime()

 

시간의 각 부분 별로 보고 싶은 대로 출력할 수 있는 함수.

 

time.strftime('출력할 형식 포맷 코드', time.localtime())

 

 

 

 

 

포맷 코드 설명 예시
%a 요일 줄여서 출력 Sun
%A 요일 Sunday
%b 달 줄여서 출력 Mar
%B March
%c 날짜와 시간을 출력 Tue Jul 12 21:30:37 2022
%d 날짜(day) [01,31] 중 해당 숫자 하나
%H 시간(hour)-24시간 기준 [00,23]중 해당 숫자 하나
%I 시간(hour)-12시간 기준 [01,12]중 해당 숫자 하나
%j 1년 중 누적 날짜 [001,366]중 해당 숫자 하나
%m [01,12]중 해당 숫자 하나
%M [01,59]중 해당 숫자 하나
%p AM or PM PM
%S [00,59]중 해당 숫자 하나
%U 1년 동안 누적 된 주 - 시작은 일요일부터 [00,53]중 해당 숫자 하나
%w 숫자로 된 요일 [0(일요일),6]중 해당 숫자 하나
%W 1년 동안 누적 된 주 - 시작은 월요일부터 [00,53]중 해당 숫자 하나
%x 현재 설정된 로케일에 기반한 날짜 출력 07/14/22
%X 현재 설정된 로케일에 기반한 시간 출력 21:28:01
%Y 년도 2022
%Z 시간대 대한민국 표준시
%% 문자 %
%y 세기부분을 제외한 년도 22

 

 

예시

 

>>> time.strftime('%x', time.localtime())
'07/12/22'
>>> time.strftime('%c', time.localtime())
'Tue Jul 12 21:30:37 2022'
>>> time.strftime('%H', time.localtime())
'21'

 

 

 

 

 

(6) time.sleep(실수)

 

해당 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.

인수는 실수로 사용 가능하다.

아래의 예는 1초 간격으로 60초를 세는 구문이다.

 

import time
>>> for i in range(60) :
...     print(i)
...     time.sleep(1)
...
0
1
2
3
4
5
6
7

 

 

 

 

 


 

 

 

 

 

8. calendar

 

calendar는 달력을 볼 수 있게 해주는 모듈이다.

 

 

 

 

 

(1) calendar.calendar(연도)

 

 그 해의 전체 달력을 볼 수 있다.

 

>>> import calendar
>>> print(calendar.calendar(2022))
                                  2022

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6          1  2  3  4  5  6
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       7  8  9 10 11 12 13
10 11 12 13 14 15 16      14 15 16 17 18 19 20      14 15 16 17 18 19 20
17 18 19 20 21 22 23      21 22 23 24 25 26 27      21 22 23 24 25 26 27
24 25 26 27 28 29 30      28                        28 29 30 31
31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3                         1             1  2  3  4  5
 4  5  6  7  8  9 10       2  3  4  5  6  7  8       6  7  8  9 10 11 12
11 12 13 14 15 16 17       9 10 11 12 13 14 15      13 14 15 16 17 18 19
18 19 20 21 22 23 24      16 17 18 19 20 21 22      20 21 22 23 24 25 26
25 26 27 28 29 30         23 24 25 26 27 28 29      27 28 29 30
                          30 31

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7                1  2  3  4
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       5  6  7  8  9 10 11
11 12 13 14 15 16 17      15 16 17 18 19 20 21      12 13 14 15 16 17 18
18 19 20 21 22 23 24      22 23 24 25 26 27 28      19 20 21 22 23 24 25
25 26 27 28 29 30 31      29 30 31                  26 27 28 29 30

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                1  2  3  4
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       5  6  7  8  9 10 11
10 11 12 13 14 15 16      14 15 16 17 18 19 20      12 13 14 15 16 17 18
17 18 19 20 21 22 23      21 22 23 24 25 26 27      19 20 21 22 23 24 25
24 25 26 27 28 29 30      28 29 30                  26 27 28 29 30 31
31

 

 

 

 

 

(2) calendar.prmonth(연도, 월)

 

원하는 연도의 월 달력을 볼 수 있다.

 

>>> calendar.prmonth(2022, 7)
     July 2022
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
>>>

 

 

 

 

 

(3) calendar.weekday (연도, 월, 일)

 

그 날짜에 해당하는 요일을 숫자로 반환한다.

월요일부터 숫자 0으로 시작한다.

 

>>> calendar.weekday(2022, 7,12)
1		#화요일

 

 

 

 

 

(4) calendar.monthrange (연도, 월)

 

입력받은 달의 1일이 무슨 요일인지, 그 달이 며칠까지 있는지를 튜플 형태로 반환한다.

 

>>> calendar.monthrange(2022,7)
(4, 31)		# 금요일 , 31일까지

 

 

 

 

 


 

 

 

 

 

9. random

 

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

 

 

 

 

(1) random.random()

 

0.0~1.0 사이의 실수 중 하나를 난수로 반환해주는 함수.

 

>>> import random
>>> random.random()
0.9506906373470612

 

 

 

 

 

(2)  random.randint(시작 정수값, 마지막 정수 값)

 

시작~마지막 사이의 랜덤 값을 반환

 

>>> random.randint(1, 100)
69

 

 

 

 

 

(3) random.choice()

 

괄호 안의 데이터 중 하나를 랜덤하게 가져온다.

 

>>> import random
>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> random.choice(a)
6

 

 

 

 

 

(4) random.shuffle()

 

괄호 안의 데이터를 랜덤하게 섞는다.

 

>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> random.shuffle(a)
>>> a
[5, 8, 6, 10, 1, 2, 4, 7, 9, 3]

 

 

 

 

 


 

 

 

 

 

10. webbrowser

 

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

 

 

 

 

 

(1) webbrowser.open(url, new=0, autoraise=True)

 

>>> import webbrowser
>>> webbrowser.open("http://www.daum.net")

 

 url : open할 url

 new : 1이면 가능한 새로운 브라우저, open 2면 탭으로 추가.

 autoraise : True면 가능하다면 창을 올립니다. (뭔 말? 최대화인가?)

 

라고 하는데 new, autoraise 값을 바꿔도 변하는 게 없다......

 

 

 

 

 

(2) webbrowser.get(브라우져 이름).open(url)

 

>>> webbrowser.get("firefox").open("https://www.google.com")

 

브라우져 이름이 없다면 기본 브라우져로 실행된다.

 

 

 

 

 

파이썬에서 정의되어 있는 브라우져 유형

유형 클래스 참고
'mozilla' Mozilla('mozilla')  
'firefox' Mozilla('mozilla')  
'netscape' Mozilla('netscape')  
'galeon' Galeon('galeon')  
'epiphany' Galeon('epiphany')  
'skipstone' BackgroundBrowser('skipstone')  
'kfmclient' Konqueror() “Konqueror”는 유닉스용 KDE 데스크톱 환경의 파일 관리자
'konqueror' Konqueror() “Konqueror”는 유닉스용 KDE 데스크톱 환경의 파일 관리자
'kfm' Konqueror() “Konqueror”는 유닉스용 KDE 데스크톱 환경의 파일 관리자
'mosaic' BackgroundBrowser('mosaic')  
'opera' Opera()  
'grail' Grail()  
'links' GenericBrowser('links')  
'elinks' Elinks('elinks')  
'lynx' GenericBrowser('lynx')  
'w3m' GenericBrowser('w3m')  
'windows-default' WindowsDefault 윈도우 플랫폼에서만
'macosx' MacOSXOSAScript('default') 맥 플랫폼에서만
'safari' MacOSXOSAScript('safari') 맥 플랫폼에서만
'google-chrome' Chrome('google-chrome')  
'chrome' Chrome('chrome')  
'chromium' Chromium('chromium')  
'chromium-browser' Chromium('chromium-browser')  

 

 

728x90
반응형

댓글