파일을 읽고 쓰는데에는 여러가지 방법이 있다. 우선 '읽'고 '쓰'는 것이 무엇인지에 대해서 간단히 이야기 하고 아래 표를 통해서 파이썬에서의 파일 읽고 쓰기 모드에 대해서 알아보자.
읽기란, 말 그대로 Read. 읽는 것으로 파일을 열어서 열람만 가능할 뿐, 별도의 수정(편집)이 불가능한 것을 말한다.
쓰기란, 말 그대로 Write. 작성하는 것으로 파일을 여는 것은 물론, 수정(편집)할 수 있는 것을 말한다.
구 분 |
r |
r+ |
w |
w+ |
a |
a+ |
읽기 |
읽기 및 쓰기 |
쓰기 |
읽기 및 쓰기 |
추가 |
읽기 및 추가 |
|
기존파일이 없는 경우 |
Error |
새로 만듦 |
||||
기존파일이 있는 경우 |
- |
기존 내용의 앞부터 지우고 새로 쓰기됨 (INSERT키 누른 것처럼) |
덮어쓰기 됨 (기존 내용 삭제) |
기존 내용의 뒤부터 새로운 내용이 추가됨 |
사실 이렇게 표로만 보면 무슨 말인지 이해가 어렵다. 실제 파일을 수정한 결과를 보면서 익혀보자.
파일 open 옵션 6가지(r, r+, w, w+, a, a+)
1. r
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r')
f.read()
f.write('r 모드라서 쓸 수가 없습니다.')
f.close()
2. r+
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r+')
f.read()
f.write('\nr+ 모드라서 쓸 수도 있어요.')
f.close()
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r+')
f.read()
f.close()
3. w
f = open('C:/Users/itisik/Documents/ITisik.txt', 'w')
f.read() # w모드라서 읽기 불가능.
f.write('w모드라서 쓸 수만 있고, 같은 이름의 기존파일은 날려버려요.')
f.close()
4. w+
f = open('C:/Users/itisik/Documents/ITisik.txt', 'w+')
f.read()
f.write('w+모드라서 읽고 쓸 수 있지만, 같은 이름의 기존파일은 날려버려요.')
f.close()
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r')
f.read()
f.close()
5. a
f = open('C:/Users/itisik/Documents/ITisik.txt', 'a')
f.read()
f.write('a모드라서 쓸 수만 있다.')
f.close()
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r')
f.read()
f.close()
6. a+
f = open('C:/Users/itisik/Documents/ITisik.txt', 'a+')
f.read()
f.write('a+모드라서 읽고 쓸 수 있어요.')
f.close()
f = open('C:/Users/itisik/Documents/ITisik.txt', 'r')
f.read()
f.close()
(기존 파일이 있으면 지워버리고) 새 파일 만들기
f = open('c:/users/itisik/documents/first_text_file.txt', 'w+')
for i in range(1, 11):
line = "%d번째 줄\n" % i
f.write(line)
f.close()
f = open('c:/users/itisik/documents/first_text_file.txt', 'r')
f.read()
f.close()
파일을 라인 별로 읽어서 예쁘게 출력하기
바로 위에서 f.read()를 통해 읽어들인 글은 줄바꿈 문자가 \n으로 표현된 다소 지저분한 상태로 출력되었다. 이번 파트에서는 txt 파일을 라인 별로 읽어들여서 예쁘게 출력시켜보도록 하자.
f = open('c:/users/itisik/documents/first_text_file.txt', 'r')
while True:
line = f.readline()
if not line: break
print(line)
f.close()
모든 라인 한 번에 읽어들이기
바로 이전의 파트에서는 readline() 함수와 while문을 통해서 각 줄 별로 읽어들이고 출력하는 코드를 작성해보았다. 이번에는 readlines() 함수를 통해서 한 번에 모든 라인을 읽어들여 for문을 통해 출력하는 코드를 작성해보자.
f = open('c:/users/itisik/documents/first_text_file.txt', 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
제일 간단한 print() 함수를 이용한 방법
사실 위와 같이 readline() 함수나 readlines() 함수를 이용하지 않고도 예쁘게 출력하는 심플한 방법이 존재한다. read()함수로 불러와진 텍스트를 print() 함수를 통해 출력하는 방법이다.
f = open('c:/users/itisik/documents/first_text_file.txt', 'r')
print(f.read())
f.close()
with문을 이용하여 불러온 파일 객체 자동으로 close하기
open() 함수로 인해 불러온 f객체는 파이썬 종료와 함께 소멸되지만, 그럼에도 불구하고 어지간하면 직접 f객체를 닫아주는 것이 좋다. 때문에 지금까지 코드의 맨 마지막에는 항상 f.close()가 붙었는데 with 키워드를 사용하여 자동으로 f객체가 닫히도록 만들어줄 수 있다.
with open('c:/users/itisik/documents/first_text_file.txt', 'r') as f:
print(f.read())
with open('c:/users/itisik/documents/first_text_file.txt', 'w') as f:
print(f.write('The End.'))
여기까지가 파이썬에서의 파일 읽기, 쓰기에 대한 내용이다. 다음부터는 본격적으로 파이썬에 대한 핵심들?에 대해서 포스트하려고 한다. 클래스가 아마도 그 시작일 것 같다.
'▼2020년 > 파이썬 기초' 카테고리의 다른 글
[Python] 파이썬에서의 입력과 출력 (0) | 2020.01.28 |
---|---|
[Python] 파이썬에서의 함수 (0) | 2020.01.23 |
[Python] 파이썬에서의 제어문 (for문) (3/3) (0) | 2020.01.22 |
[Python] 파이썬에서의 제어문 (while문) (2/3) (0) | 2020.01.22 |
[Python] 파이썬에서의 제어문 (if문) (1/3) (0) | 2020.01.22 |