List
- 파이썬 날개달기
- 클래스(class)
- 모듈(module)
- 패키지(package)
- 예외처리(exception)
- 내장함수
- 라이브러리(library)
- 연습문제
sys.argv
: 명령 행에서 인수 전달하기# argv_test.py
import sys
print(sys.argv)
['/Users/shinisgood/Documents/argv_test.py'] # 파일을 일단 디렉터리에 저장하자
text.py
뒤에 다른값을 넣어주면 sys.argv
리스트에 그 값이 추가된다.C:/doit/Mymod>python argv_test.py you need python # 여기를 잘 모르겠다 하지만
['argv_test.py', 'you', 'need', 'python']
- python 명령어 뒤에 모든것들은 공백을 기준으로 나뉘어서 리스트의 요소로 추가된다.
- 명령 프롬프트 창에서는
/
,\
든 상관 없지만, 소스코드 안에서는\
아니면//
를 무조건 사용
sys.exit
: 강제로 스크립트 종료하기Ctrl+z
나 Ctrl+D
를 눌러서 대화를 종료하는 것과 같은 기능이며, 프로그램 파일 안에서 사용 시 프로그램이 중단 된다.>>> sys.exit()
sys.path
: 모듈 불러와서 사용하기>>> import sys
>>> sys.path
['/Users/shinisgood/Documents', '/Library/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages']
sys.path.append(위치)
: 저장되어있는 위치를 추가해서, 그 위치에있는 모듈을 불러오기 위해# path_append.py
import sys
sys.path.append(“/Users/shinisgood/Documents")
객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
pickle.dump(인수, 저장위치)
: pickle
모듈의 dump
함수를 사용하여 어떤 자료형 객체를 그대로 파일에 저장할 수 있다.>>> import pickle
>>> f = open("test.txt", 'wb')
>>> data = {1: 'python', 2: 'you need'} # data를 생성하고
>>> pickle.dump(data, f) # pickle모듈과 dump함수를 가지고 test.txt 파일에 저장시킨다.
>>> f.close()
pickle.load(인수)
: pickle.dump
로 저장한 것을 다시 그 객체 상태로 불러오는 것>>> import pickle
>>> f = open("test.txt", 'rb')
>>> data = pickle.load(f)
>>> print(data)
{2:'you need', 1:'python'}
환경 변수나 디렉터리, 파일등의 os 자원을 제어할 수 있게 해준다.
os.environ
: 현재 시스템의 환경 변수값을 보여준다. (*시스템은 제각기 다른 환경 변수 값을 가지고 있다.)>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': … 생략 …})
>>>
os.environ
은 환경 변수의 정보를 딕셔너리 객체로 돌려주기 때문에, 시스템의 PATH환경 변수내용을 따로 검색이 가능하다>> os.environ['PATH'] 'C:\\ProgramData\\Oracle\\Java\\javapath;...생략...'
os.chdir
: 현재 디렉터리 위치를 변경할 수 있다.>>> os.chdir("C:\WINDOWS")
os.getcwd
: 현재 자신의 위치를 돌려준다>>> os.getcwd()
'C:\WINDOWS'
os.system(명령어)
: 시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출 가능하다.>>> os.system("dir")
os.popen
: 시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.>>> f = os.popen("dir")
읽어 들인 파일 객체의 내용을 보려면 아래와 같이 해라
>>print(f.read())
os 함수
os.mkdir(디렉터리)
: 디렉터리 생성os.rmdir(디렉터리)
: 디렉터리 삭제(디렉터리가 비어있어야 된다.)os.unlink(파일)
: 파일 삭제os.rename(x, y)
: x
라는 이름의 파일을 y
라는 파일의 이름으로 바꾼다.shutil 모듈
: 파일을 복사해 주는 모듈 shutil.copy(“x”, ”y”)
: x라는 이름의 파일을 y로 복사한다.y가 디렉터리 이름이면 x라는 파일이름으로 y디렉터리에 복사하며, y디렉터리안에 x라는 파일이름이 있다면 덮어쓴다.
>>> import shutil
>>> shutil.copy("src.txt", "dst.txt") # src.txt라는 이름의 파일을 dst.txt로 복사한다.
특정 디렉터리안에 있는 파일이름 모두를 알아야 할때 사용
glob(디렉터리(pathname))
: 디렉터리(pathname)안에있는 파일을 리스트 형태로 돌려준다.*
, ?
같은 문자를 써서 원하는 파일만 읽어 들일 수 있다.***C:/doit` 디렉터리에 있는 파일 중 이름이 `mark`로 시작하는 파일을 모두 찾아서 읽어들이는 예
>>> import glob
>>> glob.glob("c:/doit/mark*")
['c:/doit\\marks1.py', 'c:/doit\\marks2.py', 'c:/doit\\marks3.py']
>>>
파일을 임시로 만들어서 사용할 때 유용한 모듈
tempfile.mkstemp()
: 중복되지 않은 임시 파일의 이름을 무작위로 만들어서 돌려준다.>>> import tempfile
>>> filename = tempfile.mkstemp()
>>> filename
'C:\WINDOWS\TEMP\~-275151-0'
tempfile.TemporaryFile()
: 임시 공간으로 사용할 파일 개체를 돌려준다.기본적으로
바이너리 쓰기모드(wb)
를 갖고,f.close()
가 호출되면 삭제된다.
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()
time 모듈
은 엄청 많다. 유용한것만 한번 봅시다.
time.time
: 현재 시간을 실수 형태로 돌려주는 함수>>> import time
>>> time.time()
988458015.73417199
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.time())
반환된 튜플 형태의 값을 인수로받아 날짜와 시간을 알아보기 쉬운 형태로 돌려준다>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'
time.ctime
: ime.asctime(time.localtime(time.time()))
을 간편하게 표시할 수 있으며, ctime
은 항상 현재 시간만 돌려준다.>>> time.ctime()
'Sat Apr 28 20:56:31 2001'
time.strftime
: 시간 관계된 것을 세밀하게 표현하는 여러가지 포멧들을 제공time.strftime('출력할 형식 포맷 코드', time.localtime(time.time()))
시간 관계된 것을 표현하는 포멧 코드
%a
: 요일 줄임말(ex. Mon)%A
: 요일 (Monday)%b
: 달 줄임말 (Jan)%B
: 달 (January)%c
: 날짜와 시간 출력 (20/03/22 17:34:11)%d
: 날, day([03,22])%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
: 현재 설정된 로케일에 기반한 날짜 출력(21/03/22)%X
: 현재 설정된 로케일에 기반한 시간 출력(17:22:21)%Y
: 년도 출력(2021)%Z
: 시간대 출력(대한민국 표준시)%%
: 문자(%)%y
: 세기부분을 제외한 년도 출력(21)
>>> 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
: 결괏값 출력 시 지정해둔 일정한 시간간격으로 결괏값을 출력한다 (루프안에서 많이 사용)#sleep1.py
>> import time
>>> for i in range(10):
print(i)
time.sleep(1) # 즉 1이면 1초, 0.5면 0.5초가 되는 것이다.
0
1
2
3
4
5
6
7
8
9
*** 1초의 간격 천천히으로 0부터 9까지의 숫차를 출력한다.
calendar.calendar(연도)
= calendar.prcal(연도)
: 지정한 연도의 전체 달력을 볼수 있다.>>> import calendar
>>> print(calendar.calendar(2015))
>>> calendar.prcal(2015)
calendar.prmonth(연도,달)
: 해당 년도 내 달의 달력을 보여준다.>>> 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(연도, 월, 일)
: 해당 날짜의 요일을 알려준다월요일은
0
, 화요일은1
, 수요일은2
, 목요일은3
, 금요일은4
, 토요일은5
, 일요일은6
>>> calendar.weekday(2015, 12, 31)
3 # 목요일이다.
calendar.monthrange(연도,월)
: 입력 받은 달의 1일이 무슨요일인지, 달이 며칠까지 있는지를 튜플 형태로 돌려준다.>>> calendar.monthrange(2015,12)
(1, 31)
random 모듈
난수(규칙이 없는 임의의 수)를 발생시키는 모듈
random.random()
: 0.0에서 1.0 사이의 실수중 난수 값을 돌려준다
>>> import random
>>> random.random()
0.53840103305098674
random.randint(정수1, 정수2)
: 지정해둔 정수 사이의 난수 값을 돌려준다.>>> 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)
if __name__ == "__main__":
data = [1, 2, 3, 4, 5]
while data:
print(random_pop(data))
결과값:
2
3
1
5
4
*** random_pop 함수는 리스트의 요소중에서 무작위로 하나 꺼낸다음 그 값을 돌려주고, 꺼낸 요소는 pop매서드에 의해 없어진다
random.choice()
: 입력 받은 리스트 요소중에서 무작위로 하나를 선택해서 돌려준다.def random_pop(data):
number = random.choice(data)
data.remove(number)
return number
random.shuffle()
: 입력 받은 리스트 요소를 무작위로 섞어준다.>>> import random
>>> data = [1, 2, 3, 4, 5]
>>> random.shuffle(data)
>>> data
[5, 1, 3, 4, 2]
>>>
webbrowser 모듈
자신의 시스템에서 사용하는 기본 웹 브라우저를 실행시키는 모듈이다.
webbrowser.open(“URL”)
: 웹브라우져를 실행 시키고 URL주소 가게해줌
>>> import webbrowser
>>> webbrowser.open("http://google.com") # 구글 실행 시킴
이미 브라우져 켜져있다면 해당 URL로 이동한다.
webbrowser.open_new(“URL”)
: URL을 무조건 새창으로 열리게 한다.# thread_test.py
import time
def long_task(): # 5초의 시간이 걸리는 함수
for i in range(5): # 0-4까지를 출력해야하며,
time.sleep(1) # 1초간 대기해야하기 때문에.
print("working:%s\n" % i)
print("Start")
for i in range(5): # long_task를 5회 수행한다.
long_task()
print("End")
***long_task 함수는 수행하는 데 5초의 시간이 걸리는 함수이다.
***함수를 총 5번 반복해서 수행하는 프로그램이다.
***이 프로그램은 5초가 5번 반복되니 총 25초의 시간이 걸린다.
****좀더 빠르게 진행이 가능하다.
# thread_test.py
import time
import 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")