본문 바로가기

파이썬 기초

04-3 파일 읽고 쓰기

# readline_all.py
f = open("C:/doit/새파일.txt",'r')
while True:
    line = f.readline()
    if not line: break
    print(line)
f.close()
    
# readline_all.py
f = open("C:/doit/새파일.txt",'r')
while True
    line = f.readline()
    if not line: break
    print(line)
    f.close()

우리는 이제까지 값을 '입력' 받을 때는 사용자가 직접 입력하는 방식을 사용했고 '출력'할 때는 모니터 화면에 결괏값을 출력하는 방식으로 프로그래밍해 왔다. 하지만 입출력 방법이 꼭 이것만 있는 것은 아니다.

이번에는 파일을 통한 입출력 방법에 대해 알아보자.

여기에서는 파일을 새로 만든 다음 프로그램이 만든 결괏값을 새 파일에 적어볼 것이다. 또 파일에 적은 내용을 읽고, 새로운 내용을 추가하는 방법도 알아볼 것이다.

 

- 파일 생성하기

 

f = open("새파일.txt",'w')
f.close()

파일객체 = open(파일이름, 파일 열기 모드)

 

*파일 열기모드 종류

 

r : 읽기모드

w : 쓰기모드

a : 추가모드

 

만약 새파일.txt파일을 C:/doit 디렉터리에 생성하고 싶다면 다음과 같이 작성해야 한다.

 

C:/doit/새파일.txt",'w')
f.close()

 

- 파일을 쓰기 모드로 열어 출력값 적기

 

ex)

# writedata.py
f = open("C:doit/새파일.txt",'w')
for i in range(1,11):
    data = "%d번째 줄입니다.|n"%i
    f.write(data)
f.close()
for i in range(1,11):
    data = "%d번째 줄입니다.|n" %i
    print(data)

두 프로그램의 다른 점은 data를 출력하는 방법이다. 

아래방법: 우리가 계속 사용해 왔던 모니터 화면에 출력하는 방법

위쪽방법: 모니터 화면 대신 파일에 결괏값을 적는 방법

 

- 프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법

 

- readline 함수 사용하기 

# readline.py
f = open("C:/doit/새파일.txt",'r')
line = f.readline()
print(line)
f.close()

위 예는 f.open로 파일을 읽기 모드로 연 후 readline()을 사용해서 파일의 첫 벗째 줄을 읽어 출력하는 경우이다.

앞에서 만든 새파일.txt를 수정하거나 지우지 않았다면 위 프로그램을 실행했을 때 새파일.txt의 가장 첫 번째 줄이 화면에 출력될 것이다.

1번째 줄입니다.

만약 모든 줄을 읽어서 화면에 출력하고 싶다면?

 

# readline_all.py
f = open("C:/doit/새파일.txt",'r')
while True:
    line = f.readline()
    if not line: break
    print(line)
f.close()

즉 while True: 무한 루프 안에서 f.readline()을 사용해 파일을 계속해서 한 줄씩 읽어 들인다. 만약 더 이상 읽을 줄이 없으면 break를 수행한다.

 

while 1:
    data = input()
    if not data: break
    print(data)

위 예는 사용자의 입력을 받아서 그 내용을 출력하는 경우이다.

 

- readlines 함수 사용하기

 

f = open("C:/doit/새파일.txt",'r')
lines = f.readlines()
for line in lines:
    print(line)
f.close()

- read 함수 사용하기

 

f = open("C:/doit/새파일.txt",'r')
data = f.read()
print(data)
f.close()

f.read()는 파일의 내용 전체를 문자열로 돌려준다.

 

- 파일에 새로운 내용 추가하기

 

# adddata.py
f = opne("C:/doit/새파일.txt",'a')
for i in range(11,20)
    data = "%d 번째 줄입니다.|n" %i
    f.write(data)
f.close()

- with문과 함께 사용하기

지금까지 살펴본 예제를 보면 항상 다음과 같은 방식으로 파일을 열고 닫아 왔다.

f = open("foo.txt",'w')
f.write("Life is too short, you need python")
f.close()

파일을 열면 위와 같이 항상 close해 주는 것이 좋다 . 하지만 이렇게 파일을 열고 닫는 것을 자동으로 사용할수있다면 편리하지 않을까?

 

with open("foo.txt","w") as f:
    f.write("Life is too short, you need python")

위와 같이 with문을 사용하면 with 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close되어 편리하다.

 

출처: " 점프 투 파이썬"

'파이썬 기초' 카테고리의 다른 글

04-2 사용자 입력과 출력  (0) 2021.03.16
04-1 함수 (프로그램의 입력과 출력은 어떻게 해야 할까?)  (0) 2021.03.16
03-3 for문  (0) 2021.03.14
03-2 while문  (0) 2021.03.14
03 -1 if문  (0) 2021.03.14