파일 I/O
파일 I/O
이제까지는 한 파일 내에서만 코드를 작성하고 그 결과를 살펴보았습니다.
지금부터는 다른 파일을 만들고, 그 파일을 읽어 들여 내용을 추가하는 것을 공부해봅시다.
예제
>>> f=open("C:/PYTHON/temp.txt",'w')
>>> f.close()
>>>
위의 예제는 C드라이브 바로 아래에 PYTHON이라는 폴더를 만들고, temp라는 텍스트 파일을 생성하라는 코드입니다.
위의 예제를 실행한 후 실제 경로로 들어가보면 temp.txt라는 파일이 만들어져 있는 것을 확인할 수 있습니다.
그렇다면 위의 예제에서 사용된 'w'는 무슨 의미이고, open()과 close() 함수의 역할은 무엇일까요?
여기서 'w'는 파일의 열기 모드를 지정하는 문자입니다.
파이썬에서 사용할 수 있는 파일 열기 모드는 다음 표와 같습니다.
파일 열기 모드 | 설명 |
---|---|
r | 읽기모드, 파일을 읽을 수만 있음 |
w | 쓰기모드, 파일의 내용을 입력할 때 사용 |
a | 추가모드, 파일의 마지막에 내용을 추가할 때 사용 |
그렇다면 close() 함수의 역할은 무엇일까?
close() 함수는 사용한 파일 객체를 닫아주는 역할을 합니다.
파이썬에서는 파일을 닫아주지 않아도 자동으로 닫아주지만, close() 함수를 사용하여 닫는 것을 권장합니다.
다음 예제는 파일을 쓰기 모드로 열고 해당 파일의 내용을 출력하는 예제입니다.
예제
PATH = "C:/PYTHON/temp.txt"
f=open(PATH,'w')
for i in range(1,6):
line = "%d번째 줄.\n" %i
f.write(line)
f.close()
실행 결과
그렇다면 파일을 읽을 때 한 문자씩 읽는 것일까요? 아니면 한 줄씩 읽는 것일까요?
예제
>>> f=open("C:/PYTHON/temp.txt", 'r')
>>> line=f.readlines()
>>> for i in line:
print(i)
1번째 줄.
2번째 줄.
3번째 줄.
4번째 줄.
5번째 줄.
>>> f.close()
>>>
위의 예제에서 readlines() 함수는 파일의 모든 라인을 읽고 각각의 라인을 리스트로 반환해 주는 함수입니다.
파이썬에서 파일을 읽을 때 사용할 수 있는 함수는 다음과 같습니다.
1. readline()
2. readlines()
3. read()
다음 예제는 readline() 함수를 사용하여 파일을 읽는 예제입니다.
예제
>>> f=open("C:/PYTHON/temp.txt", 'r')
>>> line=f.readline()
>>> for i in line:
print(i)
1
번
째
줄
.
>>>
다음 예제는 read() 함수를 사용하여 파일을 읽는 예제입니다.
예제
>>> f=open("C:/PYTHON/temp.txt", 'r')
>>> line=f.read() >>>
for i in line:
print(i)
1
번
째
줄
.
2
번
째
줄
.
3
번
째
줄
.
4
번
째
줄
.
5
번
째
줄
.
>>>
그렇다면 기존에 존재하는 파일에 새로운 내용을 추가하고 싶을 때는 어떻해야 할까요?
다음 예제는 기존에 존재하는 파일을 추가 모드로 열고 내용을 추가하는 예제입니다.
예제
f=open("C:/PYTHON/temp.txt", 'a')
for i in range(6,11):
line = "%d번째 줄.\n" %i
f.write(line)
f.close()
실행 결과
위의 실행 결과에서 1번부터 5번 라인은 기존에 존재하던 라인이며, 6번부터 10번까지는 새롭게 추가된 라인입니다.
이처럼 파이썬에서는 파일 열기 모드를 a로 설정하여 기존에 있던 내용 바로 다음 라인에 내용을 추가할 수 있습니다.