이 문서는 파이썬 2점대를 기준으로 작성되었습니다.
9장 파일
[파일쓰기]
f =
file('t.txt', 'w') # f = open('t.txt', 'w')
f.write(s)
#문자열 파일에 기록
f.close()
[파일읽기]
f =
file('t.txt') # f = open('t.txt')
s =
f.read()
[라인단위로 파일읽기]
line
= f.readline() #한 번에 한 줄씩 읽는다.
list
= f.readlines() #파일 전체를 라인 단위로 끊어서 리스트에 저장
f.readlines()
#readlines와 유사하지만 파일 전체를 한꺼번에 읽기 않고,
필요할 때문 읽어서 공급
[라인단위로 파일 쓰기]
f.writelines(lines)
#리스트 안에 잇는 문자열을 연속해서 출력(list에 '\n'있는경우)
f.write(''.join(lines))
f.write('\n'.join(lines))(list에 '\n'
없는경우)
[파일에서 원하는 만큼의 문자읽기]
f.read(10)
#f.read(num)
[파일 처리 모드]
파일 처리 모드
|
설명
|
‘r’
|
읽기 전용
|
‘w’
|
쓰기 전용
|
‘a’
|
파일 끝에 추가(쓰기 전용)
|
‘r+’
|
읽고 쓰기
|
‘w+’
|
읽고 쓰기(기존 파일 삭제)
|
‘a+’
|
파일 끝에 추가(읽기도 가능)
|
‘rb’
|
이진 파일 읽기 전용
|
‘wb’
|
이진 파일 쓰기 전용
|
‘ab’
|
이진 파일 파일 끝에 추가(쓰기 전용)
|
‘rb+’
|
이진 파일 읽고 쓰기
|
‘wb+’
|
이진 파일 읽고 쓰기(기존 파일 삭제)
|
‘ab+’
|
이진 파일 파일 끝에 추가(읽기도 가능‘
|
f =
open('f.txt', 'a') #파일 추가 모드로 오픈
[임의 접근 파일]
f.seek(n)
#파일의 n번째 바이트로 이동
f.seek(n,
1) #현재 위치에서 n바이트 이동(n이 양수면 뒤쪽으로, 음수면 앞쪽)
f.seek(n,
2) #맨 마지막에서 n바이트 이동(n은 보통 음수)
f.tell()
#현재의 파일 포인터 위치 돌려줌
[파일 객체 method
요약]
file.close()
#파일을 닫는다. 더 이상 입출력 할 수 없게 됨
file.read([size])
#원하는 바이트 수만큼 파일에서 읽어온다. 인수를 지정하지 않으면 전체 파일 read
file.readline()
#라인 하나를 읽어들인다. size가 지정되면 읽을 수 있는 최대 바이트 수가 됨
file.readlines()
#전체 라인을 readline()을 이용하여 읽어들인 라인을 리스트에 넣어서 리턴
file.write(str)
#문자열 str을 파일에 쓴다.
file.writelines(list)
#문자열 리스트를 파일에 쓴다. 줄바꾸기가 자동으로 삽입되지는 않음
file.seek(offset[,whence])
#whence의 기본값은 0.
(0: 시작기준, 1:현재위치, 2:끝기준)
#offset만큼 떨어진 위치에 파일 포인터 위치
file.tell()
#파일의 현재 위치를 리턴
file.flush()
#버퍼가 다 채워지지 않았어도 내부 버퍼의 내용을 파일에 보낸다.
file.fileno()
#file객체의 파일 기술자(File
Descriptor)(정수)를 리턴
file.isatty()
#만일 file객체가 tty와 같은 장치이면 1 아니면 0을 리턴
file.truncate([size])
#파일 크기를 지정된 크기로 잘라 버림. 인수를 주지 않으면 현재 위치에서 자름
[파일 객체 속성]
file.closed
#file이 close
되었으면 1, 아니면 0
file.mode
#파일이 오픈된 모드
file.name
#open() 할 때 사용된 파일 이름
file.softspace
#1이면 print문을 사용할 때 값 출력 사이에 자동적으로 스페이스 출력됨.
#0이면 스페이스가 자동으로 삽입되지 않음
[표준 입.출력 방향 전환]
import
stys
sys.stdout
#표준 출력
sys.stderr
#표준 에러
sys.stdin
#표준 입력
sys.stdout
= f = StringIO.StringIO() #출력 파일 방향 전환
s =
f.getvalue() #내부 문자열 가져오기
f =
StringIO.StringIO(s) #문자열 객체에서 파일 객체 얻어내기
[지속모듈 -DBM]
#사전 자료형과 사용법 유사
#키와 값은 반드시 문자열이어야
import
anydbm
f =
anydbm.open('music', 'c') #'c'는 파일이 없으면 생성하고 읽기로 오픈
[지속모듈-피클링] #임의의 파이선 객체 저장
import
pickle
pickle.dump(출력할 객체, 파일 객체) #객체를 파일로 출력
object
= pickle.laod(파일 객체) #객체에서 파일 읽어 들임
#문자열로 객체를 출력, 문자열에서 객체 읽어들이려면..
dumps, loads
s =
pickle.dumps(출력할 객체) #출력할 객체 피클링
object
= pickle.load(s) #언픽클링
※출처 : 프리렉 파이썬_이강성 저