Program/Python

Python 라이브러리

하랑파파♡ 2020. 9. 9. 12:29
728x90
반응형
SMALL

sys

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

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

C:/User/home>python test.py abc pey guido

명령 프롬프트 창에서 위 예처럼 test.py 뒤에 또 다른 값을 함께 넣어 주면 sys.argv 리스트에 그 값이 추가된다.

ex)
# argv_test.py
import sys
print(sys.argv)

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

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

>>> sys.exit()

자신이 만든 모듈 불러와 사용하기 - 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

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

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

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

>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': … 생략 …})
>>>

디렉터리 위치 변경하기 - os.chdir

os.chdir를 사용하면 다음과 같이 현재 디렉터리 위치를 변경할 수 있다.

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

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

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

시스템 명령어 호출하기 - os.system

시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수도 있다.
os.system("명령어")처럼 사용한다.

>>> os.system("dir")

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

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

>>> f = os.popen("dir")
>>> print(f.read())

기타 유용한 os 관련 함수

os.mkdir(디렉터리)    디렉터리를 생성한다.
os.rmdir(디렉터리)    디렉터리를 삭제한다.단, 디렉터리가 비어있어야 삭제가 가능하다.
os.unlink(파일)    파일을 지운다.
os.rename(src, dst)    src라는 이름의 파일을 dst라는 이름으로 바꾼다.

shutil

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

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

glob

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

>>> import glob
>>> glob.glob("c:/doit/mark*")
['c:/doit\\marks1.py', 'c:/doit\\marks2.py', 'c:/doit\\marks3.py']
>>>

time

시간과 관련된 time 모듈

time.time

UTC(Universal Time Coordinated 협정 세계 표준시)를 사용하여 현재 시간을 실수 형태로 돌려주는 함수

>>> import time
>>> time.time()
988458015.73417199

time.localtime

time.localtime은 time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분, 초, ... 의 형태로 바꾸어 주는 함수

>>> time.localtime(time.time())
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=21, tm_hour=16,
    tm_min=48, tm_sec=42, tm_wday=1, tm_yday=141, tm_isdst=0)

time.asctime

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

>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'

time.ctime

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

>>> time.ctime()
'Sat Apr 28 20:56:31 2001'

time.strftime

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

%a    요일 줄임말    Mon
%A    요일    Monday
%b    달 줄임말    Jan
%B    달    January
%c    날짜와 시간을 출력함    06/01/01 17:22:21
%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    AM
%S    초    [00,59]
%U    1년 중 누적 주-일요일을 시작으로    [00,53]
%w    숫자로 된 요일    [0(일요일),6]
%W    1년 중 누적 주-월요일을 시작으로    [00,53]
%x    현재 설정된 로케일에 기반한 날짜 출력    06/01/01
%X    현재 설정된 로케일에 기반한 시간 출력    17:22:21
%Y    년도 출력    2001
%Z    시간대 출력    대한민국 표준시
%%    문자    %
%y    세기부분을 제외한 년도 출력    01

ex)
>>> import time
>>> time.strftime('%x', time.localtime(time.time()))
'05/01/01'
>>> time.strftime('%c', time.localtime(time.time()))
'05/01/01 17:22:21'

time.sleep

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

/* 1초 간격으로 0부터 9까지의 숫자를 출력 */
#sleep1.py
import time
for i in range(10):
    print(i)
    time.sleep(1)

calendar

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

>>> import calendar
>>> print(calendar.calendar(2015))

>>> calendar.prmonth(2015, 12)
December 2015
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

calendar.weekday

weekday(연도, 월, 일) 함수는 그 날짜에 해당하는 요일 정보
월요일은 0, 화요일은 1, 수요일은 2, 목요일은 3, 금요일은 4, 토요일은 5, 일요일은 6

>>> calendar.weekday(2015, 12, 31)
3

calendar.monthrange

입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는지를 튜플 형태로 돌려준다.

>>> calendar.monthrange(2015,12)
(1, 31)

random

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

>>> import random
>>> random.random()
0.53840103305098674

>>> random.randint(1, 10)
6

>>> random.randint(1, 55)
43

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

def random_pop_choice(data):
    number = random.choice(data) // random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다.
    data.remove(number)
    return number

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]
    while data: 
        print(random_pop(data))
/*
random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 돌려준다. 
물론 꺼낸 요소는 pop 메서드에 의해 사라진다.
*/

# 무작위로 섞고 싶을 때는 random.shuffle 함수를 사용
>>> import random
>>> data = [1, 2, 3, 4, 5]
>>> random.shuffle(data)
>>> data
[5, 1, 3, 4, 2]
>>>

webbrowser

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

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

threading

# thread_test.py
import time

def long_task():  # 5초의 시간이 걸리는 함수
    for i in range(5):
        time.sleep(1)  # 1초간 대기한다.
        print("working:%s\n" % i)

print("Start")

for i in range(5):  # long_task를 5회 수행한다.
    long_task()

print("End")

/* threading 이용 */
# thread_test.py
import time
import threading # 스레드를 생성하기 위해서는 threading 모듈이 필요하다.

def long_task():
    for i in range(5):
        time.sleep(1)
        print("working:%s\n" % i)

print("Start")

threads = []
for i in range(5):
    t = threading.Thread(target=long_task) # 스레드를 생성한다.
    threads.append(t)

for t in threads:
    t.start() # 스레드를 실행한다.

for t in threads:
    t.join()  # join으로 스레드가 종료될때까지 기다린다.

print("End")

참고 : https://wikidocs.net/33

728x90
반응형
LIST

'Program > Python' 카테고리의 다른 글

Python + Flask + Dockerfile  (0) 2020.09.10
Python 내장함수  (0) 2020.09.09
Python 예외처리  (0) 2020.09.09
Python 패키지  (0) 2020.09.09
Python 모듈  (0) 2020.09.08