파이썬에서 파일을 다루는 건 매우 쉽고 간단하다.
파일 입출력
f = open('C:/hong3/python.txt','w') # 파일 열기
f.write('파이썬) # 문자열 쓰기
-> 3 # 쓰여진 문자 개수 리턴
f.close() # 파일 닫기
open 내장 함수로 파일을 열면 파일 객체를 반환하는데,
이 객체의 메소드들을 이용해 입출력을 수행한다.
파일 열기 모드
| 모드 | 설명 |
|---|---|
| ‘r’ | 읽기 모드. 쓰진 못하고 읽기만 가능 |
| ‘w’ | 쓰기 모드. 파일이 존재하지 않으면 생성 |
| ‘a’ | append 모드. 기존에 있던 내용에 추가해서 쓰기 가능 |
| ‘x’ | exclusive 모드. w 모드와 동일하지만 이미 파일이 존재하면 error 발생 |
파일 열기 추가 옵션
| 모드 | 설명 |
|---|---|
| ‘t’ | 텍스트 모드. 파일을 텍스트 모드로 엶. 디폴트 설정 |
| ‘b’ | 바이너리 모드. 바이너리로 파일을 연다 |
| ’+’ | 추가적인 모드가 더해지는 옵션. ex) ‘w+’ -> 쓰기 모드로 연 후 읽기 모드가 더해짐 |
‘기본 옵션(t/b)(+)’
으로 옵션을 사용해준다.
파일 객체
f = open('C:/hong3/test.txt','r')
for line in f: # 파일 객체는 순회가 가능한 객체
print(line)
python
is
powerful
f.close()
- readlines()
f = open('C:/hong3/test.txt','r')
f.readlines() # 줄 단위로 읽어들여서 리스트로 만들어줌
-> ['python\n','is\n','powerful\n']
f.close()
- writelines()
s = ['python\n','is\n','powerful\n']
f = open('C:/hong3/test.txt','w')
f.writelines(s) # 리스트를 파일로 쓴다.
f.close()
파일 포인터
open 함수로 파일을 열면 파일 포인터는 텍스트 파일의 맨 처음 부분을 가리킴.
여기서 부터 읽거나 쓰기를 시작함.
임의 위치에 읽거나 쓰기를 하려면 포인터를 이용할 필요가 있다.
seek 메소드는 2개의 인자가 필요하다.
- 1번째 인자 -> 기준으로부터 몇 번째 칸으로 이동할지 결정하는 인자
- 2번째 인자 -> 기준 ( 0 -> 파일의 맨 처음, 1 -> 현재 fp 위치, 2 -> 파일의 마지막 )
f = open('C:/hong3/test.txt','w+')
f.write("ABCDEFGHIJ")
-> 10
f.flush() # 버퍼 비움 (= 파일로 씀)
f.tell() # 현재 fp위치
f.seek(4,0) # 처음으로부터 4번째
f.tell() # 확인
-> 4
f.read(1)
-> 'E'
f.tell()
-> 5
f.seek(0,1) # 현재 fp 위치로
-> 5
f.write("***")
-> 3
f.tell()
-> 8
f.close()
# 파일 내용: "ABCDE***IJ"
seek 메소드는 2개의 인자가 필요하다.
- 1번째 인자 -> 기준으로부터 몇 번째 칸으로 이동할지 결정하는 인자
- 2번째 인자 -> 기준 ( 0 -> 파일의 맨 처음, 1 -> 현재 fp 위치, 2 -> 파일의 마지막 )
Comments