'2011/11'에 해당되는 글 10건
- 2011.11.26 파이썬 – 날짜시간(datetime) 모듈
- 2011.11.26 파이썬 – 시간(time) 모듈 1
- 2011.11.22 파이썬 – os 모듈 2
- 2011.11.21 [Python challenge Level15] - uzi(whom?) 2
- 2011.11.21 [Python challenge Level14] - italy(walk around)
- 2011.11.21 파이썬 – sys 모듈
- 2011.11.20 파이썬 – os.glob 모듈
- 2011.11.20 파이썬 – os.path 모듈 2
[ 날짜시간 모듈에 관련 클래스 ] | |
[ 클래스 ] | [ 내용 ] |
class datetime.date | 일반적으로 사용되는 그레고리안 달력의 년,월,일을 나타냄 |
class datetime.time | 시간을 시,분,초,마이크로 초,시간대로 나타냅니다. |
class datetime.datetime | date클래스와 time클래스의 조합으로 년,월,일,시,분,초,마이크로 초, 시간대 정보를 나타냅니다. |
class datetime.timedelta | 두 날짜 혹은 시간 사이의 기간을 표현합니다. |
[ date 클래스 ] | ||||||||||||||||||||||||||||||||||||||||||||||||||
┗[ date 객체를 반환하는 클래스 메서드 ]┓
┗┓
[ date 객체 속성 ]
┗┓
[ date 객체를 이용하여 다른 값/형식으로 변환하는 메서드 ]
┗┓
[ 그 외 date 객체의 출력 형태를 변경하는 메서드 ]
┗┓
|
[ time 클래스 ] | ||||||||||||||||||||||||||||
┗┓
[ time 객체 속성 ]
[ time 클래스 지원 메서드 ]
┗┓
|
[ datetime 클래스 ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
┗[ datetime 객체를 반환하는 메서드 ]┓
┗┓
[ datetime 객체 속성 ]
[ datetime 클래스를 다른 형식으로 변환하는 메서드 ]
┗┓
[ datetime 클래스의 출력과 관련된 메서드 ]
┗┓
|
[ timedelta 클래스 ] | ||||||||||||
┗┓
┗┓
┗┓
┗┓
|
'Programming > Python' 카테고리의 다른 글
ftplib(FTP protocol client) 모듈 (0) | 2011.12.08 |
---|---|
파이썬 – 시간(time) 모듈 (1) | 2011.11.26 |
파이썬 – os 모듈 (2) | 2011.11.22 |
파이썬 – sys 모듈 (0) | 2011.11.21 |
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
[ 컴퓨터 시간 표현 ] | |
[ 용어 ] | [ 내용 ] |
타임스탬프 (TimeStamp) | 컴퓨터에서 시간을 측정하는 방법으로 1970년 1월1일 자정 (epoch)이후로 초 단위로 측정한 절대시간 입니다. |
협정세계시 (UTC, Universal Time Coordinated) | 1972부터 시행된 국제 표준시 (세슘 원자의 진동수에 의거한 초의 길이가 기준이 됩니다) |
그리니치 평균시 (GMT, Greenwich Mean Time) | 런던 그리니치 천문대의 자오선상에서의 평균 태양시 (1972년 부터 협정세계시를 사용하지만, 동일한 표현으로 널리 쓰임) |
지방표준시 (LST, Local Standard Time) | UTC를 기준으로 경도 15도마다 1시간 차이가 발생하는 시간 (한국은 동경 135도를 기준으로 UTC보다 9시간 빠름) |
일광절약 시간제 (DST, Daylight Saving Time) | 흔히 서머타임으로 알고 있는 것으로, 에너지 절약을 목적 으로 시간을 한 시간씩 앞당기거나 뒤로 미루는 제도. |
[ struct_time 시퀀스 객체 ] | |
[ 속성 ] | [ 내용 ] |
tm_year | 년도(예: 1982, 1999, 2009) |
tm_mon | 월(1~12) |
tm_mday | 일(1~31) |
tm_hour | 시(0~23) |
tm_min | 분(0~59) |
tm_sec | 초(0~61) |
tm_wday | 각 요일을 숫자로 나타냅니다. (월요일은 '0' 입니다) |
tm_yday | 1월 1일부터 오늘까지 누적된 날짜를 반환 (1~366) |
tm_isdst | 일광절약 시간제(서머타임)를 나타냅니다 (0, 1, -1) |
[ time 모듈 함수 ] | |
[ 함수 ] | [ 내용 ] |
time.time() | 1970년 1월 1일 자정 이후로 누적된 초를 float 단위로 반환 |
time.sleep(secs) | 현재 동작 중인프로세스를 주어진 초만큼 정지 |
time.gmtime([secs]) | 입력된 초를 변환하여, UTC기준의 struct_time 시퀀스 객체로 반환 (인자가 입력되지 않은 경우, time()을 이용하여 현재 시간을 변환) |
time.localtime([secs]) | 입력된 초를 변환하여, 지방표준시 기준의 struct_time 시퀀스 객체를 반환 (인자가 입력되지 않은 경우, time()을 이용하여 현재 시간을 변환) |
time.asctime([t]) | struct_time 시퀀스 객체를 인자로 받아서 'Sun Mar 15 18:49:28:2009'와 같은 형태로 반환 |
time.mktime(t) | 지방표준시인 struct_time 시퀀스 객체를 인자로 받아서 time()과 같은 누적된 초를 반환 |
time.strftime(format,[, t]) | struct_time 객체를 사용자가 정의한 형식으로 변경하여 문자열로 반환 |
time.strptime(string[, format]) | 사용자가 정의한 형식 문자열을 struct_time 객체로 변환 |
[ 형식 지정자 ] | |
[ 지시자 ] | [ 내용 ] |
%y | 연도를 축약하여 표시 |
%Y | 연도를 축약하지 않고 표시 |
%b | 축약된 월 이름 |
%B | 축약되지 않은 월 이름 |
%m | 숫자로 표현한 월(01~12) |
%d | 일(01~31) |
%H | 24시를 기준으로 한 시(00~23) |
%I | 12시를 기준으로 한 시(01~12) |
%M | 분(00~59) |
%S | 초(00~61) |
%p | 오전(AM) / 오후(PM)을 표시 |
%a | 축약된 요일 이름 |
%A | 축약되지 않은 요일 이름 |
%w | 요일을 숫자로 표시(예: 일요일(0)) |
%j | 1월 1일부터 누적된 날짜(001~366) |
[ Example ] |
▶ time 모듈의 함수 사용
▶ 10초가 sleep하는 예제
[실행결과]
▶ strftime() - 날짜의 출력 형식 지정
▶ strptime() - 지정된 형식 문자열 형태로 표현된 시간을 struct_time 객체로 변환
|
'Programming > Python' 카테고리의 다른 글
ftplib(FTP protocol client) 모듈 (0) | 2011.12.08 |
---|---|
파이썬 – 날짜시간(datetime) 모듈 (0) | 2011.11.26 |
파이썬 – os 모듈 (2) | 2011.11.22 |
파이썬 – sys 모듈 (0) | 2011.11.21 |
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
◎ 운영체제(OS)에서 제공되는 기본적인 기능들을 제공.
os.getcwd(), os.chdir(path) | |
chdir() 함수는 현재 작업 디렉터리 위치를 변경하며, getcwd()함수는 현재 작업 디렉터리의 위치를 가져올 때 쓰입니다. | |
>>> getcwd() 'C:\\Python3' >>> chdir('Tools') >>> getcwd() 'C:\\Python3\\Tools' |
os.access(path, mode) | |||||||||||
입력받은 <path>에 대해서 <mode>에 해당하는 작업이 가능한지의 여부를 반환합니다.
| |||||||||||
>>> access('.', F_OK) # existence True >>> access('.', W_OK | X_OK | R_OK) # write, exec, read True |
os.listdir(path) | |
해당 경로(path)에 존재하는 파일과 디렉터리들의 리스트를 반환합니다. | |
>>> listdir('.') ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'tcl', 'Tools', 'w9xpopen.exe'] |
os.mkdir(path[, mode]) | |
<path>에 해당하는 디렉터리를 생성합니다. | |
>>> mkdir('test1') ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'tcl', 'test1', 'Tools', 'w9xpopen.exe'] |
os.makedirs(path[, mode]) | |
인자로 전달된 디렉터리를 재귀적으로 생성합니다. 이미 디렉터리가 생성되어 있는 경우나 권한이 없어 생성할 수 없는 경우는 예외를 발생합니다. | |
>>> makedirs('test2/sub1/sub2/leaf') >>> listdir('test2/sub1/sub2') ['leaf'] >>> makedirs('test2/sub1/sub2/leaf') # 이미 존재하는 디렉터리를 생성하는 경우 예외 발생 Traceback (most recent call last): File "<pyshell#18>", line 1, in <module> makedirs('test2/sub1/sub2/leaf') File "C:\Dev\Python3\lib\os.py", line 152, in makedirs mkdir(name, mode) WindowsError: [Error 183] 파일이 이미 있으므로 만들 수 없습니다: 'test2/sub1/sub2/sub3' |
os.remove(path), os.unlink(path) | |
파일을 삭제 합니다. | |
>>> remove('test.txt') >>> unilnk('test.txt') |
os.rmdir(path) | |
디렉터리를 삭제합니다. 단, 디렉터리는 비어있어야만 합니다. | |
>>> mkdir('test1') |
os.removedirs(path) | |
디렉터리를 연달아 삭제합니다.
※ 만약 '윈도우 탐색기'와 같은 애플리케이션으로 'sub1' 디렉터리를 보고 있다면, removedirs() 함수로 'sub1' 디렉터리를 삭제할 수 없습니다. 탐색기를 종료하고 수행해야 합니다. | |
# leaf 디렉토리 삭제에 성공하면 차례로 sub2, sub1, test2의 순서로 삭제 >>> removedirs('test2/sub1/sub2/leaf') |
os.rename(src, dst) | |
src를 dst로 이름을 변경하거나 이동합니다. 파일이나 디렉터리에 대해서 모두 적용 됩니다. | |
>>> rename('text.txt', 'renamed.txt') |
os.renames(src, dst) | |
src를 dst로 이름을 변경하거나 이동합니다. rename과 다른점은 이동 시에 필요한 디렉터리들을 자동으로 생성한다는 것입니다. | |
>>> renames('renamed.txt', 'test_renames/moved.txt') >>> listdir('test_renames') ['moved.txt'] |
os.stat(path) | |
경로에 해당하는 정보를 얻어옵니다. 아래의 예제와 같이 순차적으로 protection, inode, device, link, user id, group id, size, last access time, last modified time, last change time 등을 나타냅니다. (stat() 함수 결과 중 일부는 유닉스/리눅스 시스템에만 해당되는 것도 있습니다) | |
>>> stat('python.exe') nt.stat_result(st_mode=33279, st_ino=281474976762468, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=26624, st_atime=1321851747, st_mtime=1315097496, st_ctime=1315097496) |
os.utime(path, times) | |
경로에 해당하는 파일에 대해 액세스 시간(access time)과 수정 시간(modified time)을 <times>로 수정합니다. <times>가 None일 경우는 현재 시간으로 수정합니다. (유닉스의 touch 명령어와 유사) | |
>>> stat('readme.txt') nt.stat_result(st_mode=33206, st_ino=281474976762465, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=6788, st_atime=1321797957, st_mtime=1315094610, st_ctime=1315094610) >>> utime('readme.txt', None) >>> stat('readme.txt') nt.stat_result(st_mode=33206, st_ino=281474976762465, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=6788, st_atime=1321950244, st_mtime=1321950244, st_ctime=1315094610) |
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) | |
top으로 지정된 디렉터리를 순회하며 경로, 디렉터리명을 순차적으로 반환합니다. | |
# 다음의 구조로 test_walk, a, b 디렉터리를 만들어 놓고 walk를 실행
>>> for path,dirs,files in walk('test_walk'): print(path, dirs, files)
test_walk ['a', 'b'] [] test_walk\a [] [] test_walk\b [] ['readme.txt']
# topdown이 False로 설정된 경우에는 다음과 같이 디렉터리의 끝에서부터 위로 탐색 >>> for path,dirs,files in walk('test_walk', topdown=False): print(path, dirs, files)
test_walk\a [] [] test_walk\b [] ['readme.txt'] test_walk ['a', 'b'] [] |
os.umask(mask) | |
umask를 설정합니다. 수행하면 이전 mask 값이 반환됩니다. umask가 수행되면 이후 오픈 되는 파일이나 디렉터리에 (mode & ~umask)와 같이 적용됩니다. |
os.pipe() | |
파이프를 생성합니다. 함수를 실행하면 읽기, 쓰기 전용 파이프의 파일 디스크립터가 반환됩니다.
(※ 파이프(pipe)란 프로세스 간 통신을 위한 공유 영역입니다. 여러 프로세스 간에 정보를 주고 받기 위해 만들어지는 공간이며, 하나의 프로세스가 정보를 쓰면 다른 프로세스에서 읽을 수 있습니다) | |
>>> pipe() (3, 4) |
os.fdopen(fd[, mode[, bufsize]]) | |
파일 디스크립터를 이용해 파일 객체를 생성합니다.
(※ fdopen은 'from os import *'로 import가 안됩니다. fdopen의 경우 'from os import fdopen'으로 따로 import 해주어야 합니다) | |
>>> from os import * >>> from os import fdopen
>>> r,w = pipe() >>> rd = fdopen(r) >>> rd <_io.TextIOWrapper name=3 mode='r' encoding='cp949'> |
os.popen(command[, mode[, bufsize]]) | |
인자로 전달된 command를 수행하며 파이프를 엽니다. (파이썬3 에서는 Popen 클래스의 사용을 권장하지만 그대로 사용할 수도 있습니다)
(※ popen은 'from os import *'로 import가 안됩니다. popen의 경우 'from os import popen'으로 import하거나 import os 후 os.popen으로 사용해야 합니다) | |
>>> from os import popen
>>> p = popen('dir', 'r') >>> p.read() ...<중략>... 2011-09-04 오전 09:51 26,624 python.exe\n 2011-09-04 오전 09:51 27,136 pythonw.exe\n 2011-11-22 오후 05:24 6,788 README.txt\n 2011-11-20 오후 11:06 <DIR> tcl\n 2011-11-20 오후 11:05 <DIR> Tools\n 2011-09-04 오전 09:51 49,664 w9xpopen.exe\n 6개 파일 396,879 바이트\n 9개 디렉터리 72,007,368,704 바이트 남음\n' |
os.name | |
파이썬이 실행되는 운영체제의 이름을 나타냅니다. (ex: 'nt', 'posix', 'mac'등...) | |
>>> name 'nt' |
os.environ | |
환경변수들을 나타내는 사전입니다. | |
>>> environ environ({'TMP': 'C:\\DOCUME~1\\ADMINI~1\\LOCALS~1\\Temp', 'COMPUTERNAME': 'WIN2003', 'USERDOMAIN': 'WIN2003', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', ...<중략>...}) >>> environ['OS'] 'Windows_NT' >>> environ['userprofile'] 'C:\\Documents and Settings\\Administrator' |
os.getpid() | |
현재 프로세스 아이디를 반환합니다. | |
>>> getpid() 3380 |
os.getenv(varname[, value]) | |
환경 변수의 값을 얻어 옵니다. 다만 해당 환경 변수가 없을 경우에는 인자로 전달된 <value>값을 반환합니다. value가 생략되고 해당 환경 변수가 없으면 None을 반환 합니다. | |
>>> getenv('homepath') '\\Documents and Settings\\Administrator' >>> getenv('test', '') '' |
os.putenv(varname, value) | |
환경변수 <varname>을 <value>로 설정합니다. 자식 프로세스에게 영향을 미칩니다. | |
>>> putenv('test', '\\tmp\\test')
# 자식 프로세스에게 영향을 미치므로, putenv()의 결과 확인. >>> from os import popen >>> p = popen('''python -c "import os; print(os.getenv('test'))"''', 'r') >>> p.read() '\\tmp\\test\n' |
os.strerror(code) | |
에러 코드에 해당하는 에러 메시지를 보여줍니다. | |
>>> for i in range(0, 44): print (i, strerror(i))
0 No error 1 Operation not permitted 2 No such file or directory 3 No such process 4 Interrupted function call 5 Input/output error 6 No such device or address 7 Arg list too long 8 Exec format error 9 Bad file descriptor 10 No child processes ...<중략>... |
os.system(command) | |
<command>를 실행하며, 성공한 경우 0을 반환합니다. | |
[계산기 실행화면] |
os.startfile(path[, operation]) | |
<path>를 os에서 지정된 프로그램으로 실행합니다. 또한 <operation>으로 명시적으로 수행할 프로그램을 지정할 수 있습니다.
(※ starfile('LICENSE.txt')의 경우 system("Notepad LICENSE.txt')와 유사하지만 system()을 사용하는 경우에는 파이썬 프로그램의 실행이 잠시 멈추고 system()이 끝나길 기다리게 되고, startfile()은 멈추지 않고 계속 실행됩니다.) | |
os.execl(path, arg0, arg1, ...) os.execle(path, arg0, arg1, ..., env) os.execlp(file, arg0, arg1, ...) os.execlpe(file, arg0, arg1, ..., env) os.execv(path, args) os.execve(path, args, env) os.execvp(file, args) os.execvpe(file, args, env) | |
위의 함수는 현재 프로세스에서 새로운 프로그램을 수행시키며 리턴은 하지 않습니다. 인자에 따라 여러 가지 exec로 나뉘어지는데, 우선'l'이 붙은 것들은 입력인자들의 수가 정해져 있는 경우이고, 'v'가 붙은 것들은 args라는 튜플로 입력인자를 받습니다. 'e'가 붙은 경우는 환경변수 env를 받느냔 아니냐의 차이이며, 'p'는 환경변수의 path를 이용하는 경우입니다. | |
>>> execl('C:\\Python3\python', 'python', '-v') >>> execv('python', ('python', '-v')) >>> execle('C:\Python3\python', 'python', '-v', {"HOME":"C:\\"}) |
'Programming > Python' 카테고리의 다른 글
파이썬 – 날짜시간(datetime) 모듈 (0) | 2011.11.26 |
---|---|
파이썬 – 시간(time) 모듈 (1) | 2011.11.26 |
파이썬 – sys 모듈 (0) | 2011.11.21 |
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
파이썬 – os.path 모듈 (2) | 2011.11.20 |
[ Problem ] |
|||||||||||
§ 그림에 1월 26에 표시된 달력이 보입니다. 하지만 년도는 구멍이 나있어 정확한 년도는 보이지 않고 1xx6년 이라는 추측만 할수 있습니다. 또한 우측하단에 12월과 2월이 보이는데 정확한 숫자는 알수 없으나 2월에 29칸에 차있으므로, 이해는 윤년(leap year)임을 짐작할 수 있습니다.
즉, 1xx6년 1월 26일이 월요일 이며 윤년인 해로 요약할 수 있습니다 그럼 해당하는 해를 찾아 봅시다.
출력결과를 보면 5개의 년도가 출력 되었다.(1176, 1356, 1576, 1756, 1976) 해당 HTML 페이지 소스에서 실마리를 찾아보자.
§ HTML 페이지 소스에서 힌트 찾기
힌트를 주석을 보면... <!-- he ain't the youngest, he is the second --> - 그는 최연소가 아니며 두 번째 이다? 즉 해당 년도중 가장 작은수가 아니고 끝에서 두번째인 1756년. <!-- todo: buy flowers for tomorrow --> - 내일을 위해 꽃을 사라? (내일... 27일)
해당 결과와 힌트를 조합해 보면 1756년 1월 27일이 된다.
▷ 검색해 보면 모차르트(mozart) 탄생일 이라는것을 알수 있다.
next challenge : mozart.html |
|||||||||||
[ Solution ] |
http://huge:file@www.pythonchallenge.com/pcc/return/mozart.html |
'워게임(WarGame) > PythonChallenge' 카테고리의 다른 글
[Python challenge Level14] - italy(walk around) (0) | 2011.11.21 |
---|---|
[Python challenge Level13] - disproportional (xmlrpclib) (0) | 2011.07.01 |
[Python challenge Level12] – evil (dealing evil) (0) | 2011.06.29 |
[Python challenge Level11] - 5808 (odd-even) (0) | 2011.06.28 |
[Python challenge Level10] - bull (개미수열) (0) | 2011.06.27 |
[ Problem ] - http://huge:file@www.pythonchallenge.com/pc/return/italy.html
♧ 타이틀은 walk around 이고 빵 한 개와 바코드와 비슷하게 보이는 사진이 있다.
▷ 소스를 보자!
▷ 소스를 보면 'italy.jpg'는 빵 사진이고 'wire.png'는 바코드처럼 보이는 사진이다. 'wire.png'를 클릭해보면 '10000 x 1 pixels' 이라 아무것도 보이지 않는데 이것을 잠시 size를 '100 x 100'로 바꿔 보면 (크롬의 개발자 모드) 메인과 같은 바코드와 같은 그림이 보이는 것을 알 수 있다.
위에 소스에서 remember 주석을 참조해 보면 아래의 그림과 같이 바깥에서 부터 100+99+99+98+98+97...과 같이 2회당 1씩 감소한다. 즉, 위의 바코드 이미지를 아래와 같이 Pixel값을 회전하면서 재배치 한다.
w 이를 바탕으로 소스를 짜보면 다음과 같습니다.
▷ 마지막으로 'uzi.html' 접속하면 끝. |
[ Solution ] - http://huge:file@www.pythonchallenge.com/pcc/return/uzi.html
(※ 문제에 대한 다양한 해결법은 링크 참조.)
'워게임(WarGame) > PythonChallenge' 카테고리의 다른 글
[Python challenge Level15] - uzi(whom?) (2) | 2011.11.21 |
---|---|
[Python challenge Level13] - disproportional (xmlrpclib) (0) | 2011.07.01 |
[Python challenge Level12] – evil (dealing evil) (0) | 2011.06.29 |
[Python challenge Level11] - 5808 (odd-even) (0) | 2011.06.28 |
[Python challenge Level10] - bull (개미수열) (0) | 2011.06.27 |
◎ sys모듈은 파이썬 인터프리터와 관련된 정보와 기능을 제공하는 모듈이다.
sys.argv | |||
파이썬 스크립트로 넘어온 입력인자(argument)들의 리스트. | |||
- 아래 예제와 같이 0번째는 스크립트 이름이 있으며, 그 이후부터 인자들이 설정 [ test_argv.py 예제코드 ]
[ 실행 결과 ]
|
sys.exc_info() | |||
현재 발생한 예외정보를 튜플로 반환 (예외가 없는 경우 None을 반환) | |||
[ 예외가 없는 경우 ]
[ 예외가 발생한 경우 ]
|
sys.prefix, sys.exec_prefix, sys.executable | |
파이썬이 설치된 경로와 실행파일을 나타냅니다. | |
>>> sys.prefix # 파이썬이 설치된 경로 'C:\\Python3'
>>> sys.exec_prefix 'C:\\Python3'
>>> sys.executable # 파이썬 인터프리터의 실행파일 경로 'C:\\Python3\\pythonw.exe' |
sys.exit([arg]) | |
프로세스를 종료시킵니다. (arg가 0인 경우에는 정상 종료되며, 0이 아닌 경우에는 비정상종료 처리) |
sys.getrefcount(object) | |
객체의 참조 카운트 값을 반환합니다. 일반적으로 이 값은 임시객체가 참조하는 경우도 포함되어서 1보다 크다. | |
>>> t = "test refcount" >>> sys.getrefcount(t) 2 >>> t1 = t >>> sys.getrefcount(t) 3 |
sys.getwindowsversion() | |
현재 윈도우의 버전을 튜플로 반환. | |
>>> sys.getwindowsversion() sys.getwindowsversion(major=5, minor=2, build=3790, platform=2, service_pack='Service Pack 2') |
sys.modules | |
현재 로딩되어있는 모듈들을 사전 형태로 나타냅니다. | |
>>> sys.modules {'heapq': <module 'heapq' from 'C:\Python3\lib\heapq.py'>, 'tkinter.filedialog': <module 'tkinter.filedialog' from 'C:\Python3\lib\tkinter\filedialog.py'>, 'functools': <module 'functools' from 'C:\Python3\lib\functools.py'>, 'random': <module 'random' from 'C:\Python3\lib\random.py'>, ...<생략>... |
sys.path | |
모듈을 찾을 때 참조하는 경로를 나타냅니다. | |
>>> sys.path ['C:\\Python3\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python32.zip', 'C:\\Python3\\DLLs', 'C:\\Python3\\lib', 'C:\\Python3', 'C:\\Python3\\lib\\site-packages'] |
sys.copyright, sys.version | |
설치된 파이썬의 저작권, 버전을 나타냅니다. | |
>>> sys.copyright 'Copyright (c) 2001-2011 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'
>>> sys.version '3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)]' |
sys.getdefaultencoding() | |
현재 사용중인 기본 문자열 인코딩을 반환합니다. | |
>>> sys.getdefaultencoding() 'utf-8' |
sys.stdin, sys.stdout, sys.stderr | |
표준 입력, 출력, 에러 스트림에 대응되는 파일 객체들을 나타냅니다. | |
>>> sys.stdout.write("hi python") # 표준 출력 스트림 hi python >>> sys.stderr.write("hi python") # 표준 에러 스트림 hi python |
'Programming > Python' 카테고리의 다른 글
파이썬 – 시간(time) 모듈 (1) | 2011.11.26 |
---|---|
파이썬 – os 모듈 (2) | 2011.11.22 |
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
파이썬 – os.path 모듈 (2) | 2011.11.20 |
파이썬 – 정규식표현식(Regular Expression) 모듈 (8) | 2011.11.20 |
◎ glob 모듈은 윈도우의 dir 명령어나 리눅스의 ls 명령어와 유사한 기능을 제공합니다.
glob.glob(path) | |
glob() 함수는 경로에 대응되는 모든 파일 및 디렉터리의 리스트를 반환합니다. '*'와 '?'도 사용가능하며 "["과"]"를 사용한 문자열 비교도 가능합니다. | |
>>> glob.glob('*') ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'tcl', 'Tools', 'w9xpopen.exe'] >>> glob.glob('./[0-9].*') ['./1.gif', './2.txt'] >>> glob.glob('*.gif') ['1.gif', 'card.gif'] >>> glob.glob('?.gif') ['1.gif'] >>> glob.glob('*.exe') ['python.exe', 'pythonw.exe', 'w9xpopen.exe'] >>> from os.path import * >>> glob.glob(abspath('.' + '\\*.exe')) ['C:\\Python30\\python.exe', 'C:\\Python30\\pythonw.exe', 'C:\\Python30\\w9xpopen.exe'] |
glob.iglob(path) | |
glob과 동일한 동작을 수행하지만, 리스트로 결과를 반환하는 것이 아니라 이터레이터를 반환. 한번에 모든 결과를 리스트에 담지 않으므로, 결과가 매우 많은 경우 유용하게 쓰일 수 있다. | |
>>> glob.iglob('*') <generator object iglob at 0x012230D0> >>> for i in glob.iglob('*'): print (i)
DLLs Doc include Lib libs LICENSE.txt NEWS.txt python.exe pythonw.exe README.txt tcl Tools w9xpopen.exe |
[ Example ] - Tree 예제 | ||
w tree는 하위 디렉터리 구조를 보여 주는 툴입니다. os.path와 glob의 일부 기능을 이용해서 tree와 비슷한 기능을 수행하는 예제 작성.
[ tree.py 소스코드 ]
[ 실행결과 ]
|
'Programming > Python' 카테고리의 다른 글
파이썬 – os 모듈 (2) | 2011.11.22 |
---|---|
파이썬 – sys 모듈 (0) | 2011.11.21 |
파이썬 – os.path 모듈 (2) | 2011.11.20 |
파이썬 – 정규식표현식(Regular Expression) 모듈 (8) | 2011.11.20 |
◎ 자료형 확인과 기타의 자료형 (0) | 2010.07.31 |
◎ os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.
os.path.abspath(path) | |
현재 경로를 Prefix로 하여 입력받은 경로를 절대경로로 바꿔서 반환합니다. | |
>>> abspath('tmp') 'C:\\Python30\\tmp' |
os.path.basename(path) | |
입력받은 경로의 기본 이름(base name)을 반환합니다. abspath() 함수와 반대되는 기능을 수행한다고 볼 수 있습니다. | |
>>> basename('C:\\Python30\\tmp') 'tmp' >>> basename('C:\\Python30\\tmp\\test.txt') 'test.txt' |
os.path.commonprefix(path_list) | |
입력받은 path_list로부터 공통적인 Prefix를 추출해서 반환합니다. 그러나 이 결과는 문자열 연산에 의한 것이기 때문에 다음의 두 번째 예제와 같이 잘못된 경로가 나올 수도 있습니다. | |
>>> commonprefix(['C:\\Python30\\Lib', 'C:\\Python30', 'C:\\Python30\\Tools']) 'C:\\Python30' >>> commonprefix(['C:\\Python26\\Lib', 'C:\\Python25\\Tools']) 'C:\\Python2' |
os.path.dirname(path) | |
입력받은 파일/디렉터리의 경로를 반환합니다. | |
>>> dirname('C:\\Python30\\tmp\\test.txt') 'C:\\Python30\\tmp' >>> dirname('C:\\Python30\\tmp') 'C:\\Python30' |
os.path.exists(path) | |
입력받은 경로가 존재하면 True를 반환하고, 존재하지 않는 경우는 False를 반환합니다. 리눅스와 같은 OS에서는 파일이나 디렉터리가 존재하지만 읽기 권한이 없는 경우에도, False를 반환할 수 있습니다. | |
>>> exists('C:\\Python30') True >>> exists('C:\\Python30\\Devanix') False |
os.path.expanduser(path) | |
입력받은 경로안의 "~"를 현재 사용자 디렉터리의 절대경로로 대체합니다. "~"에 붙여서 <사용자명>을 붙이면 원하는 사용자 경로로 대체됩니다. (유닉스/리눅스의 홈디렉터리를 나타내는 '~'과 동일합니다) | |
>>> expanduser('~\\devanix') 'C:\\Documents and Settings\\Administrator\\devanix' |
os.path.expandvars(path) | |
path안에 환경변수가 있따면 확장합니다. (환경변수는 os.environ에 정의된 것을 참조) | |
>>> expandvars('$HOME\\temp') 'C:\\Documents and Settings\\Administrator\\temp' >>> expandvars('$SYSTEMROOT\\var') 'C:\\WINDOWS\\var' |
os.path.getatime(path) | |
입력받은 경로에 대한 최근 접근 시간을 반환 (반환되는 값은 epoch(1970년 1월 1일) 이후 초단위로 반환됩니다. 파일이 없거나 권한이 없는 경우 os.error 예외 발생) | |
>>> getatime('C:\\Python30\\python.exe') 1320966393.375 # 읽을 수 있는 형식으로 보려면 다음과 같이 하면 됩니다. >>> import time >>> time.gmtime(getatime('C:\\Python30\\python.exe')) time.struct_time(tm_year=2011, tm_mon=11, tm_mday=10, tm_hour=23, tm_min=6, tm_sec=33, tm_wday=3, tm_yday=314, tm_isdst=0) |
os.path.getmtime(path) | |
입력받은 경로에 대한 최근 변경 시간을 반환 (파일이 없거나 권한이 없는 경우 os.error 예외 발생) | |
>>> getmtime('C:\\Python30\\python.exe') 1320966397.453125 |
os.path.getctime(path) | |
입력받은 경로에 대한 생성시간을 반환 (유닉스와 같은 운영체제에서는 생성시간이 아닌 최근 변경 시간을 반환할 수도 있습니다. 파일이 없거나 권한이 없는 경우 os.error 예외 발생) | |
>>> getctime('C:\\Python30\\python.exe') 1320966393.0625 |
os.path.getsize(path) | |
입력받은 경로에 대한 바이트 단위의 파일크기를 반환. (파일이 없거나 권한이 없는 경우 os.error 예외 발생) | |
>>> getsize('C:\\Python30\\python.exe') 26624L |
os.path.isabs(path) | |
경로가 절대경로이면 True를 반환하고, 그 외의 경우에는 False를 반환. (실제 해당 경로를 검사하지는 않으며 입력받은 문자열을 가지고 판단합니다.) | |
>>> isabs('C:\\Python30\\python.exe') True |
os.path.isfile(path) | |
경로가 파일인지 아닌지 검사합니다. 파일인 경우에는 True를 반환하고, 그 외의 경우 False를 반환. (혹은 해당 경로가 존재하지 않은 경우에는 False를 반환합니다) | |
>>> isfile('C:\\Python30\\python.exe') True >>> isfile('C:\\Python26\\python.exe') False |
os.path.isdir(path) | |
경로가 디렉터리인지 아닌지 검사합니다. 디렉터리인 경우에는 True를 반환하고, 그 외의 경우에는 False를 반환합니다. 혹은 경로가 존재하지 않은 경우에는 False 반환합니다. | |
>>> isdir('C:\\Python30\\python.exe') False >>> isfile('C:\\Python30\\Lib') True |
os.path.join(path1[,path2[,...]]) | |
해당 OS 형식에 맞도록 입력 받은 경로를 연결합니다. (입력 중간에 절대경로가 나오면 이전에 취합된 경로는 제거하고 다시 연결합니다) | |
>>> join('C:\\Python30', 'Script', 'test.py') 'C:\\Python30\\Script\\test.py' >>> join('C:\\Python30', 'D:\\Test', 'test.py') 'D:\\Test\\test.py' |
os.path.normcase(path) | |
해당 OS에 맞도록 입력 받은 경로의 문자열을 정규화 합니다. (윈도우와 같은 경우, 아래 예제와 같이 소문자로 바꾸고 '/'를 '\\'로 변경합니다) | |
>>> normcase('C:\\Python30\\python.exe') 'c:\\python30\\python.exe' >>> normcase('C:/Python30/python.exe') 'c:\\python30\\python.exe' |
os.path.normpath(path) | |
입력 받은 경로를 정규화합니다. (현재 디렉터리(".")나 상위 디렉터리("..")와 같은 구분자를 최대한 삭제) | |
>>> normpath('C:\\Python30/./python.exe') 'C:\\Python30\\python.exe' >>> normpath('C:\\Python30/./../python.exe') 'C:\\python.exe' |
os.path.split(path) | |
입력 받은 경로를 디렉터리 부분과 파일 부분으로 나눕니다. 단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다. | |
>>> split('C:\\Python30\\python.exe') ('C:\\Python30', 'python.exe') |
os.path.splitdrive(path) | |
입력 받은 경로를 드라이브 부분과 나머지 부분으로 나눕니다. 단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다. | |
>>> splitdrive('C:\\Python30\\python.exe') ('C:', '\\Python30\\python.exe') |
os.path.splitext(path) | |
입력 받은 경로를 확장자 부분과 그 외의 부분으로 나눕니다. 단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다. | |
>>> splitext('C:\\Python30\\python.exe') ('C:\\Python30\\python', '.exe') |
※ (다음 예제 코드는 from os.path import *를 하고 나서 실행)
'Programming > Python' 카테고리의 다른 글
파이썬 – sys 모듈 (0) | 2011.11.21 |
---|---|
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
파이썬 – 정규식표현식(Regular Expression) 모듈 (8) | 2011.11.20 |
◎ 자료형 확인과 기타의 자료형 (0) | 2010.07.31 |
◎ 내장 자료형의 분류 (0) | 2010.07.31 |