반응형
python file i/o, directory, read/write
-파일 IO
파일객체=open(file, mode)
간략하게
f = open('a.txt') 이렇게도 된다.
-mode
r ; read (default)
r+ ; read/write
w ; write
a ; append
t ; text mode (default)
b ; binary
contents=f.read() ; 전체 읽기
str=f.readline() ; 한 줄 읽기 (\n포함!), 더 읽을게 없으면 None 리턴.
strarray=f.readlines() ; 여러줄을 읽어 list로 반환. (\n포함!)
f = open('filename', 'mode')
while 1:
line = f.readline() # 마지막에 \n도 포함되어 줄 단위로 읽는다.
if not line : break
print(line)
f.write(buf)
f.close()
여러줄 읽기
lines = f.readlines()
tell(), seek() 지원
+ 파일 열기
f = open('c:\\users\\user01\\desktop\\a.txt', 'rt')
오픈 모드 ; r=read, w=write
t=text, b=binary
+ 읽기
lines = f.readlines() # 여러줄 읽기. string list로 반환. (마지막에 \n도 포함됨.) 제거하려면, rstrip() 사용
f.close()
for line in lines:
print(line, end="") # 라인마지막에 \n이 포함되어 있어서 print에서 자체 \n을 제거하여 출력.
-파일 IO
파일객체=open(file, mode)
간략하게
f = open('a.txt') 이렇게도 된다.
-mode ;
r ; read (default)
r+ ; read/write
w ; write
a ; append
t ; text mode (default)
b ; binary
f.read() ; 전체 읽기
f.readline() ; 한 줄 읽기 (\n포함), 더 읽을게 없으면 None 리턴.
f.readlines() ; 여러줄을 읽어 list로 반환. (\n포함)
f = open('filename', 'mode')
while 1:
line = f.readline() # 마지막에 \n도 포함되어 줄 단위로 읽는다.
if not line : break
print(line)
f.write(buf)
f.close()
모드는 r,w,a
여러줄 읽기
lines = f.readlines()
tell(), seek() 지원
+ 파일 열기
f = open('c:\\users\\user01\\desktop\\a.txt', 'rt')
오픈 모드 ; r=read, w=write
t=text, b=binary
+ 읽기
lines = f.readlines() # 여러줄 읽기. string list로 반환. (마지막에 \n도 포함됨.) 제거하려면, rstrip() 사용
f.close()
for line in lines:
print(line, end="") # 라인마지막에 \n이 포함되어 있어서 print에서 자체 \n을 제거하여 출력.
+쓰기
f = open('a.txt', 'wt')
f.write('test\n')
f.write('test2\n')
f.close()
f.seek(위치)
f.tell() ; 현재 위치
f = open('a.txt', 'wt')
f.write('test\n')
f.write('test2\n')
f.close()
f.seek(위치)
f.tell() ; 현재 위치
+ OS, sys 모듈
import os
print (os.getcwd()) ; 현재 디렉터리
os.listdir('c:\python27') ; dir list
os.rename('a.txt', 'b.txt') ; rename file
os.chdir('/users/...') ; cd
os.path.join('/users/aa', 'a.py') ; 경로 만들기
os.path.expanduser('~') ; home dir
(dirname, filename) = os.path.split(pathname) ; directory, filename 분리
(shortname, ext) = os.path.splitext(filename) ; filename, extension 분리 ;
abc.py -> abc, .py
++ 현재 소스 디렉터리
srcdir = os.path.dirname( os.path.abspath(__file__))
print('srcdir=', srcdir)
+ listing directory
import glob ; glob module ; shell wild card support!
glob.glob('examples/*.xml') ; 파일 목록 조회
+ file info
metadata = os.stat('feed.xml')
metadata.st_mtime
123332323.32233223
time.localtime(metadata.st_mtime) ; time.struct_time( tm_year, tm_mon, tm_mday, tm_hour, tm_min...)
metadata.st_size ; file size
import humansize
humansize.approximate_size( metadata.st_size) ; '3.0 KiB'
-전체 경로 얻기
os.path.realpath('feed.xml') ; full path
os.getcwd() ; 현재 디렉터리
os.chdir(…) ; 현재 디렉터리 이동
os.path.isdir(...)
os.path.isfile(...) ; 존재여부 & 파일타입
os.path.isexists(...) ; 존재 여부
os.path.getsize(...) ; 파일 크기
os.path.split(...') ; (dir, file) 두 부분으로 잘라준다. 두 부분을 나누는 delimeter는 제외.
os.path.join(dir,filename) ; 두 개를 합쳐준다.
os.sep ; os seperator 문자. / or \
os.path.normpath(mixed) ; / 와 \가 섞였을때 고쳐준다.
os.getpid() ; process id
os.getuid() ; process's real user id
os.getlogin() ; user id
os.mkdir('c:\\test\\test1\\test2') ; mkdir(path [,mode]) default mode = 0777, if exist? OSError.
os.makedirs(path[, mode]) ; 중간 경로 생성. if exist, error. 에러 무시하려면? exist_ok=True를 추가함.
os.makedirs('c:\\test\\test1\\test2', exist_ok=True)
'Python' 카테고리의 다른 글
랜덤스트링 만들기 (0) | 2019.03.22 |
---|---|
matplotlib subplot 화면분할 grid로 분할하기 (0) | 2019.03.22 |
WebAPI thread work status (0) | 2018.07.03 |
Python BeautifulSoup 웹크롤링/HTML 파싱. (0) | 2018.04.25 |
Python 데이터 저장/로딩 Pickle (0) | 2018.04.25 |