명령 행에서 인수 전달하기
파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
argv_test.py 파일을 C:/doit/Mymod 디렉터리에 저장했다고 가정한다.
import sys
print(sys.argv)
명령 프롬프트 창에서 Mymod 디렉터리로 들어간 뒤 다음과 같이 실행해보자
C:/doit/Mymod>python argv_test.py you need python
['argv_text.py', 'you', 'need', 'python']
python 명령어 뒤의 모든 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트의 요소가 된다.
강제로 스크립트 종료하기
>>> sys.exit()
자신이 만들 모듈 불려와 사용하기
파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 즉 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.
>>> import sys
>>> sys.paht
['', 'C:\\Window\\SYSTEM32\\python37.zip', 'c:\\Python37\\DLLs'...]
>>>
위의 예에서 ''는 현재 디렌터리를 말한다.
import sys
sys.path.append("C:\doit\Mymod")
위와 같이 sys.path.append를 사용해 경로 이름을 추가할 수 있다.
객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다. 다음은 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를 사용해서 원래 있던 딕셔너리 객체 상태 그대로 불러오는 예이다.
>>> import pickle
>>> f = open("text.txt", rb)
>>> data = pickle.load(f)
>>> print(data)
{1:'python', 2:'you need'}
os모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.
>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': ,,, 생략 ...})
>>>
다음과 같이 호출 할 수도 있다.
>>> os.environ['PATH']
'C:\\ProgramData\\Oracle\\Java\\Javapath; ... 생략 ...'
>>> os.chdir("D:\WINDOWS")
>>> os.getcwd()
'C:\WINDOWS' //현재 디렉처리 위치에 따라 결과가 다를 수 있음
>>> os.system("dir")
>>> f = os.popen("dir")
읽어 들인 파일 객체의 내용을 보기 위해서는 다음과 같이 하면된다.
>>> print(f.read())
파일을 복사해 주는 파이썬 모듈
아래 예시는 src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉터리 이름이라면 src라는 파일 이름으로 dst 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.
>>> import shutil
>>> shutil.copy("src.txt", "dst.txt")
특정 디렉터리에 있는 파일이름을 모두 알아야하는 경우에 사용한다.
>>> import glob
>>> glob.glob("c:\doit/mark*")
['c:/doit\\marks1.py', 'c:/doit\\marks2.py']
tempfile.mkstemp()는 중복도지 않는 임시 파일의 이름을 무자가위로 만들어서 돌려준다.
>>> import tempfile
>>> filename = tempfile.mkstemp()
>>> filename
'C:\WINDOWS\TEMP\~275151-0'
tempfile.TemporaryFile()은 임시 저장 공간으로 사용할 파일 객체를 돌려준다. 이 파일은 기본적으로 바이너리 쓰기 모드를 갖는다. f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()
>>> import time
>>> time.time()
988458015.93417199
>>> time.localtime(time.time())
time.struct_time(tm.year=2013, tm_mon=5, tm_mday=21, tm_hour=16, tm_min=48, tim_sec=42, tm_wday=1, tm_yday=141, tm_isdst=0)
>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'
>>> time.ctime()
'Sat Apr 28 20:50:20 2001'
time.strftime('출력할 형힛 포맷 코드', time.localtime(time.time()))
다음은 time.strftime을 사용하는 예이다.
>>> 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'
#sleep.py
import time
for i in range(10):
print(i)
time.sleep(1)
1초 간격으로 0부터 9까지의 숫자를 출력한다.
calendar.calendar(연도)로 사용하면 그해의 전체 달력을 볼 수 있다.
>>> import calendar
>>> print(calendar.calendar(2015))
calendar.prcal(연도)를 사용해도 위와 똑같은 결괏값을 얻을 수 있다.
>>> claendar.prcal(2015)
>>> calendar.weekday(2015, 12, 31)
3 //목요일
>>> calendar.monthrange(2015,12)
(1,31)
아래는 0.0에서 1.0 사이의 실수 중에서 난수 값을 돌려주는 예를 보여 준다.
>>> import random
>>> random.random()
0.543578735435437
다음 예는 1에서 55 사이의 정수 중에서 난수 값을 돌려준다.
>>> random.randint(1, 55)
43
웹 브라우저를 자동으로 실행하고 해당 url로 이동시켜준다.
>>> import webbrowser
>>> webbrowser.open("http://google.com")
open 함수는 웹 브라우저가 이미 ㅣㄹ행된 상태라면 입력 주소로 이동한다. 만약 웹 브라우저가 실행되지 않은 상태라면 새로 웹 브라우저를 실행한 후 해당 주소로 이동한다.
open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리게 한다.
>>> webbrowser.open_new("http://google.com")