파일 입출력
open
내장 함수 사용시 두번째 인자값으로 mode설정
생략시 읽기전용(r)으로 설정
r
-읽기 전용 - 파일 객체를 읽기 모드로 생성, 파일 포인터를 파일 처음 위치로, 존재하지 않는 파일이면 에러발생w
- 쓰기 전용 - 새로운 파일을 생성하거나 기존 파일의 내용을 다 없애고 쓰기모드로 생성, 파일 포인터를 파일 처음 위치로a
- 파일 끝에 추가 - 이미 존재하는 파일을 쓰기모드로 생성하거나 존재하지 않으면 파일 만들고 생성, 파일 포인터를 마지막 위치에 놓음
이진파일 모드
rb
wb
ab
f.close()
처럼 close()
로 그때그때 닫아주는 것이 좋음
read()
를 사용하면 전체를 다 읽어서 할당함
라인단위로 파일 읽기
for
반복문 활용1
2
3
4
5
6f = open('t.txt')
i = 1
for line in f:
print i, ":", line,
i += 1
f.close()readline()
-현재의 파일 포인터에서 개행 문자까지 읽음 = 한 라인1
2
3
4
5
6
7
8f = open('t.txt')
line = f.readline()
i = 1
while line:
print i, ":", line,
line = f.readline()
i += 1
f.close()readlines()
-각 라인을 모두 읽어서 리스트로 저장, 메모리는 비효율적으로 사용
상황별로 다른 동작함 -for in
구문: 전체x, 라인별로 가져옴1
2
3
4
5
6
7
8
9
10
11f = open('t.txt')
print f.readlines() #리스트 나옴
#파일 포인터를 맨 앞으로
f.seek(0)
i = 1
for line in f.readlines():
print i, ":", line,
i += 1
f.close()xreadlines()
- 메모리 비효율 개선1
2
3
4
5
6
7
8
9
10
11f = open('t.txt')
print f.xreadlines() #파일객체 자체가 나옴
#파일 포인터를 맨 앞으로
f.seek(0)
i = 1
for line in f.xreadlines():
print i, ":", line,
i += 1
f.close()
for in
또는 xreadlines()
추천
라인 단위로 쓰는 방법
writelines()
- 라인단위로 쓰기 작업1
2
3
4
5
6
7
8lines = ['1st line\n', '2nd line\n', '3rd line\n']
f = open('t1.txt','w')
f.writelines(lines)
f.close()
f = open('t1.txt')
print f.read() #전체내용 읽음
f.close()write()
- 임의로 중간에 ‘\n’ 넣어줌1
2
3
4
5
6
7
8lines = ['1st line', '2nd line', '3rd line']
f = open('t1.txt','w')
f.write('\n'.join(lines))
f.close()
f = open('t1.txt')
print f.read() #전체내용 읽음
f.close()
기존 파일에 내용 추가
a
모드 사용1
2
3
4
5
6
7f = open('removeme.txt', 'a')
f.write('3rd line\n')
f.close()
f = open('removeme.txt')
print f.read()
f.close()
파일 내 임의 위치로 접근
- 순차접근
- 임의접근
seek(n)
- 파일의 가장 첫번째 위치에서 n번째 바이트로 포인터이동tell()
- 파일 내 현재 포인터 위치를 반환
1 | name = 't.txt' |
sys 모듈의 표준 입출력(모니터) 관련 객체
- sys.stdout: 표준 입출력
- sys.stderr: 표준 에러 출력
- sys.stdin: 표준 입력
표준 출력으로 파일 저장하기
1 | import sys |