'Programming/Python'에 해당되는 글 17건
- 2011.12.08 ftplib(FTP protocol client) 모듈
- 2011.11.26 파이썬 – 날짜시간(datetime) 모듈
- 2011.11.26 파이썬 – 시간(time) 모듈 1
- 2011.11.22 파이썬 – os 모듈 2
- 2011.11.21 파이썬 – sys 모듈
- 2011.11.20 파이썬 – os.glob 모듈
- 2011.11.20 파이썬 – os.path 모듈 2
- 2011.11.20 파이썬 – 정규식표현식(Regular Expression) 모듈 8
FTP(File Transfer Protocol) 프로토콜 클라이언트는 새로 구현할 필요가 없다.
ftplib 모듈이 FTP클래스를 지원하며 이것은 클라이언트 측의 FTP 프로토콜을 구현한다.
이 클래스를 다른 FTP 사이트의 미러링과 같은 자동화된 FTP 작업을 수행하기 위해 사용할 수 있다.
FTP는 기본 포트 21/20을 사용하는 이중 채널 프로토콜이다. 서버의 21번 포트는 제어 연결로서
제어 정보를 전달하는 데 사용되고, 20번 포트는 데이터를 교환하는 데 사용된다.
ftplib는 기본적으로 패시브(Passive)모드로 동작한다. 즉, 서버가 데이터 포트를 먼저 열고,
데이터 포트 정보를 제어 연결 포트를 통해 전달하면 클라이언트가 포트로 접속하는 방식이다.
(※ FTP 규약에 관한 자세한 정보는 인터넷 RFC 959를 참조.)
[ 객체 생성 ]
class ftplib.FTP(host[, user[, passwd[, acct]]])) | |
ftp 객체를 생성한다. host가 주어지면 서버로 연결(connect(host))하고, 부가적으로 user, passwd 정보가 주어지면 로그인(login(user, passwd, acct))이 된다. | |
>>> from ftplib import FTP >>> ftp = FTP("ftp1.at.proftpd.org") # connect to host, default port |
[ 접속 관련 메서드 ]
FTP.connect(host[, port]) | |
주어진 (host, port)로 연결. | |
>>> from ftplib import FTP >>> ftp = FTP() >>> ftp.connect("ftp1.at.proftpd.org") '220 FTP Server ready.' |
FTP.login([user[, passwd[, acct]]]) | |
로그인함 (아무 인수도 주어지지 않으면 'anonymous'로 로그인) | |
>>> ftp.login(user, password) |
FTP.close() | |
연결 종료 | |
>>> ftp.close() |
[ 파일 목록을 얻는 메서드 ]
FTP.dir([argument[, ...]]) | |
"LIST"명령으로 파일 목록을 얻는다. 선택적인 인수 argument는 파일 목록을 표시할 디렉터리를 지정한다. (기본값 - 현재 디렉터리) | |
>>> from ftplib import FTP >>> with FTP("ftp1.at.proftpd.org") as ftp: ... ftp.login() ... ftp.dir() ... '230 Anonymous login ok, restrictions apply.' dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 . dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 .. dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora ... |
FTP.nlst([argument[, ...]]) | |
"NLST" 명령으로 파일 목록을 얻는다. 선택적인 인수 argument는 파일 목록을 표시할 디렉터리를 지정한다. (기본값 - 현재 디렉터리) | |
>>> ftp.nlst() ['.', '..', 'centos', 'fedora', 'CentOS', 'Fedora', 'ProFTPD', 'grml', 'linux-kernel', 'OpenOffice.org', 'Knoppix', 'LibreOffice'] |
[ 파일 다운로드/저장 메서드 ]
FTP.retrlines(command[, callback]) | |
ASCII 모드로 파일을 받는다. 텍스트 파일을 다운로드 받을 때 command는 "RETR 파일 이름"이 된다. 파일 목록을 받을 때 사용한다면 command는 "LIST"가 된다. callback은 서버로부터 전송되는 블록을 저장할 함수로 기본값은 sys.stdout.write이다. | |
>>> ftp.retrlines('LIST') # 화면에 파일 목록 표시 dr-xr-xr-x 10 ftp ftp 4096 Aug 12 13:34 . dr-xr-xr-x 10 ftp ftp 4096 Aug 12 13:34 .. dr-xr-xr-x 5 ftp ftp 4096 Sep 14 15:23 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora ... '226 Transfer complete'
>>> ftp.cwd('./ProFTPD') # 디렉터리 변경 >>> ftp.retrlines('RETR README.MIRRORS') # 화면에 파일 내용 표시 This is the main distribution site for ProFTPD. Rather than downloading ... '226 Transfer complete'
# 로컬에 저장 >>> ftp.retrlines('RETR README.MIRRORS', open('c:\\readme.txt', 'w').write) '226 Transfer complete' |
FTP.retrbinary(command, callback[, maxblocksize[, rest]]) | |
이진 파일을 받을 때 사용한다. command는 "RETR 파일이름"이 된다. callback은 서버로부터 전송되는 블록을 저장할 함수이다. | |
>>> ftp.retrbinary('RETR pybbs.tar', open('pybbs.tar', 'wb').write) |
FTP.storlines(command, file) | |
ASCII 모드로 파일을 서버에 저장한다. command는 "STOR 파일이름"이며 file은 서버로 데이터를 보내는 데 사용될 readline() 메서드를 제공하는 파일 객체이다. | |
>>> ftp.storlines('STOR xpath.py', open('xpath.py', 'r')) |
FTP.storbinary(command, file[, blocksize]) | |
이진 모드로 파일을 서버에 저장한다. command는 "STOR 파일이름"이며 file은 서버로 데이터를 보내는 데 사용될 read() 메서드를 제공하는 파일 객체이다. | |
>>> ftp.storbinary('STOR test.tgz', open('test.tgz', 'rb')) |
FTP.abort() | |
파일 전송을 중지한다. |
[파일 관련 메서드] | |
[ 메서드 ] | [ 설명] |
size(filename) | 서버에 filename의 크기를 요구.(성공-정수 크기, 실패-None) |
rename(fromname, toname) | 서버에 있는 파일 이름 변경 |
delete(filename) | 서버의 파일을 삭제 |
[디렉터리 관련 메서드] | |
[ 메서드 ] | [ 설명] |
pwd() | 서버의 현재 디렉터리를 얻는다 |
cwd(pathname) | 서버의 현재 디렉터리를 변경 |
mkd(pathname) | 서버에 디렉터리 생성 |
rmd(dirname) | 서버에 디렉터리 제거 |
[기타 메서드] | |
[ 메서드 ] | [ 설명] |
set_pasv(boolean) | 만일 boolean이 참이면 passive 모드가 설정. |
sendcmd(command) | 임의의 단순한 명령을 서버로 전송하고 응답 문자열을 받는다. |
voidcmd(command) | 임의의 단순한 명령을 서버로 전송하고 응답 코드를 처리한다. 응답 코드가 200-299 영역인 경우에는 리턴 값이 없으며 그렇지 않으면 예외가 발생한다. |
'Programming > Python' 카테고리의 다른 글
파이썬 – 날짜시간(datetime) 모듈 (0) | 2011.11.26 |
---|---|
파이썬 – 시간(time) 모듈 (1) | 2011.11.26 |
파이썬 – os 모듈 (2) | 2011.11.22 |
파이썬 – sys 모듈 (0) | 2011.11.21 |
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
[ 날짜시간 모듈에 관련 클래스 ] | |
[ 클래스 ] | [ 내용 ] |
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 |
◎ 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 |
[ 반복 메타 문자 ]
[메타 문자] | [의미] |
* | 0회 이상 반복 |
+ | 1회 이상 반복 |
? | 0회 or 1회 |
{m} | m회 반복 |
{m, n} | m회부터 n회까지 반복 |
[ 매칭 메타 문자 ]
[메타 문자] | [의미] |
. | 줄바꿈 문자를 제외한 모든 문자와 매치됨 |
^ | 문자열의 시작과 매치됨 |
$ | 문자열의 마지막과 매치됨 |
[ ] | 문자 집합 중 한 문자를 의미 |
| | 또는(or)를 의미 |
{ } | 정규식을 그룹으로 묶음 |
[ 이스케이프 기호 ]
[종류] | [설명] |
\\ | 역슬래쉬 문자 자체 |
\d | 모든 숫자와 매치됨 [0-9] |
\D | 숫자가 아닌 문자와 매치됨 [^0-9] |
\s | 화이트 스페이스 문자와 매치됨 [ \t\n\r\f\v] |
\S | 화이트 스페이스가 아닌 것과 매치됨 [^ \t\n\r\f\v] |
\w | 숫자 또는 문자와 매치됨 [a-zA-Z0-9_] |
\W | 숫자 또는 문자가 아닌 것과 매치됨 [^a-zA-Z0-9_] |
\b | 단어의 경계를 나타냄. 단어는 영문자 혹은 숫자의 연속 문자열 |
\B | 단어의 경계가 아님을 나타냄 |
\A | 문자열의 처음에만 일치 |
\Z | 문자열의 끝에만 일치 |
[ 최소 매칭을 위한 정규식 ]
[기회] | [의미] |
*? | *와 같으나 문자열을 취소로 매치함 |
+? | +와 같으나 문자열을 취소로 매치함 |
?? | ?와 같으나 문자열을 최소로 매치함 |
{m,n}? | {m,n}과 같으나 문자열을 최소로 매치함 |
[ 정규 표현식에서 사용 가능한 플래그 ]
[플래그] | [내용] |
I, IGNORECATE | 대, 소문자를 구별하지 않는다 |
L, LOCATE | \w, \W, \b, \B를 현재의 로케일에 영향을 받게 한다 |
M, MULTILINE | ^가 문자열의 맨 처음, 각 라인의 맨 처음과 매치 된다 $는 문자열의 맨 끝, 각 라인의 맨 끝과 매치 |
S, DOTALL | .을 줄바꾸기 문자도 포함하여 매치하게 한다 |
U, UNICODE | \w, \W, \b, \B가 유니코드 문자 특성에 의존하게 한다 |
X, VERBOSE | 정규식 안의 공백은 무시된다 |
[ re모듈의 주요 메소드 ]
[메소드] | [설명] |
compile(pattern[, flags]) | pattern을 컴파일하여 정규식 객체를 반환 |
match(pattern, string[,flags]) | string의 시작부분부터 pattern이 존재하는지 검사하여 MatchObject 인스턴스를 반환 |
search(pattern, string[,flags]) | string의 전체에 대해서 pattern이 존재하는지 검사하여 MatchObject 인스턴스를 반환 |
split(pattern, string[, maxplit=0]) | pattern을 구분자로 string을 분리하여 리스트로 반환 |
findall(pattern, string[, flags]) | string에서 pattern을 만족하는 문자열을 리스트로 반환 |
finditer(pattern, string[, flags]) | string에서 pattern을 만족하는 문자열을 반복자로 반환 |
sub(pattern, repl, string[, count=0]) | string에서 pattern과 일치하는 부분에 대하여 repl로 교체하여 결과 문자열을 반환 |
subn(pattern, repl, string[, count=0]) | sub와 동일하나, 결과로(결과문자열, 매칭횟수)를 튜플로 반환 |
escape(string) | 영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴. (임의의 문자열을 정규식 패턴으로 사용할 경우 유용) |
[ Match 객체 ]
Match객체는 match(), search()의 수행 결과로 생성되며, 검색된 결과를 효율적으로 처리할 수 있는 기능 제공.
◎ Match객체가 지원하는 메소드와 속성
[메소드] | [속성] |
group([group1, ...]) | 입력받은 인덱스에 해당하는 매칭된 문자열 결과의 부분 집합을 반환합니다. 인덱스가 '0'이거나 입력되지 않은 경우 전체 매칭 문자열을 반환합니다. |
groups() | 매칭된 결과를 튜플 형태로 반환 |
groupdict() | 이름이 붙여진 매칭 결과를 사전 형태로 반환 |
start([group]) | 매칭된 결과 문자열의 시작 인덱스를 반환. (인자로 부분 집합의 번호나 명시된 이름이 전달된 경우, 그에 해당하는 시작 인덱스를 반환) |
end([group]) | 매칭된 결과 문자열의 종료 인덱스를 반환. (인자로 부분 집합의 번호나 명시된 이름이 전달된 경우, 그에 해당하는 종료 인덱스를 반환) |
pos | 원본 문자열에서 검색을 시작하는 위치입니다. |
endpos | 원본 문자열에서 검색을 종료하는 위치입니다. |
lastindex | 매칭된 결과 집합에서 마지막 인덱스 번호를 반환. (일치된 결과가 없는 경우 에는 None을 반환) |
lastgroup | 매칭된 결과 집합에서 마지막으로 일치한 이름을 반환. (정규식의 매칭 조건에 이름이 지정되지 않았거나 일치된 결과가 없는 경우 None 반환) |
string | 매칭의 대상이 되는 원본 문자열입니다. |
[ 예제 ] - re 모듈 함수 |
▶ re.match()와 re.search()의 차이 re.match()의 경우 대상 문자열의 시작부터 검색을 하지만, re.search()함수는 대상 문자열 전체에 대해서 검색을 수행한다. 예) 아래와 같이 검색의 대상이 되는 문자열에 공백이 있는 경우나 또는 검색 키워드와 일치하는 문자열이 대상 문자열의 중간 이후에 존재하는 경우 re.match()함수는 검색을 못함.
▶ re.split() - 대상 문자열을 입력된 패턴을 구분자로 하여 분리
▶ re.findall() - 검색 문자열에서 패턴과 매칭되는 모든 경우를 찾아 리스트로 반환
▶ re.sub() - 패턴과 일치하는 문자열 변경
▷ 또한 변경할 문자열에 대해서 매칭된 문자열을 사용할 수도 있다.
|
[ 예제 ] - 정규 표현식 객체 |
▶ 동일한 패턴을 연속적으로 검색하는 경우, 정규식을 컴파일하여 정규표현식 객체를 생성.
▶ re.IGNORECASE 플래그로 대소문자 구분하지 않고 매칭 작업 수행
▶ re.MULTILINE 플래그를 설정하여 빈 라인을 제외하고 라인별로 분리
|
[ 예제 ] - Match 객체 |
▶ 일반적인 형식의 전화번호를 인삭하여 Match 객체가 지원하는 메소드 분석.
▶ 정규식 작성시 '(?<이름>..)' 형식으로 매칭 결과에 대해 이름을 부여하고, groupdict() 메서드를 이용하여 사전 형태로 이름과 검색된 문자쌍을 얻음.
|
로우 문자열 표기법 (Raw string notation) |
이스케이프 문자열을 표현하기 위하여 '\'(백슬래쉬)문자를 사용하기 때문에, 문자 '\'를 정규표현식 으로 표현하기 위해서는 '\\\\'로, 일반 문자열에선느 '\\'로 표현해야 합니다. 그래서 '\apple'이란 문자열을 검색하기 위해서는 아래와 같이 매우 복잡한 형식으로 표현해야 합니다.
로우 문자열 표기법은 문자열 앞에 'r'을 더한 것으로, \(백슬래쉬) 문자를 이스케이프 문자열로 처리 하지 않고 일반 문자와 동일하게 처리합니다. 이렇게 함으로써 정규표현식 및 문자열에서 '\'를 간단 하게 표현할 수 있습니다. 일반적으로 정규표현식에 사용되는 문자열에서는 이러한 편리함 때문에 많이 사용합니다.
|
'Programming > Python' 카테고리의 다른 글
파이썬 – os.glob 모듈 (0) | 2011.11.20 |
---|---|
파이썬 – os.path 모듈 (2) | 2011.11.20 |
◎ 자료형 확인과 기타의 자료형 (0) | 2010.07.31 |
◎ 내장 자료형의 분류 (0) | 2010.07.31 |
◎ 자료형의 종류(문자열,리스트,튜플,사전) (0) | 2010.07.31 |