35. 파이썬 – 파일 읽고 쓰기(내용 쓰기.파일 읽기)

35. 파이썬 – 파일 읽고 쓰기(내용 쓰기.파일 읽기)

이전 공부 내용에서는 파일을 생성하는 것 까지 진행을 해보았습니다.

이번에는 생성된 파일을 쓰기 모드로 열어 내용 쓰기에 대해 공부해 보겠습니다

파이썬 입출력

파일 읽고 쓰기

쓰기 모드로 파일을 열고 내용 쓰기

이전 포스팅에서는 파일을 쓰기 모드로 열어보는 것을 해봤습니다. 그 안에 내용은 쓰지 않았죠.
이번에는 문자열을 파일에 쓰는 것을 해보겠습니다.

Python
# write_test.py
file = open(r"d:\test\신규파일.txt", 'w')
for i in range(1, 11):
    text = "%d 번째 줄 입니다.\n" % i
    file.write(text)
file.close()

위에 코드를 실행하고 해당 경로로 가서 파일을 열어보면 아래처럼 결과가 나옵니다.

Python
1 번째 줄 입니다.
2 번째 줄 입니다.
3 번째 줄 입니다.
4 번째 줄 입니다.
5 번째 줄 입니다.
6 번째 줄 입니다.
7 번째 줄 입니다.
8 번째 줄 입니다.
9 번째 줄 입니다.
10 번째 줄 입니다.

다른 코드를 살펴보겠습니다.

Python
for i in range(1, 11):
    data = "%d 번째 줄 입니다.\n" % i
    print(data)

위 코드의 결과는 아래와 같습니다.

Python
1 번째 줄 입니다.

2 번째 줄 입니다.

3 번째 줄 입니다.

4 번째 줄 입니다.

5 번째 줄 입니다.

6 번째 줄 입니다.

7 번째 줄 입니다.

8 번째 줄 입니다.

9 번째 줄 입니다.

10 번째 줄 입니다.

앞서 open을 사용해 쓰기모드에서 내용을 쓴 코드와 그 다음 print 문으로 출력한 코드의 차이점은 data 를 출력하는 방식입니다.
두 번째 방식은 이전에 계속 진행했었던 모니터 화면에 출력하는 방식이고,
첫 번째 방식은 모니터 화면대신 생성한 파일에 쓰기모드로 열어 데이터를 입력하는 방식입니다.
print 대신 파일 객체인 file 의 write 함수를 사용한 것 말고는 차이가 거의 없습니다.

그리고 똑같이 줄바꿈을 해줬는데 write 함수를 썼을 때는 정상적으로 한번의 줄바꿈으로 표현이 되어 있는데 print 문을 썼을 때는 for 문으로 반복해서 진행을 하다 보니 줄바꿈이 한번 더 표현이 된 듯 합니다.

파일 읽기의 여러 가지 방법

파일을 읽는 방법에는 여러가지가 있습니다.

readline 함수 이용

먼저 reading 함수를 사용하는 방법에 대해 알아보겠습니다.

Python
# reading_test.py
file = open(r"d:\test\신규파일.txt", 'r')
line = file.readline()
print(line)
file.close()

위 코드를 보면 신규파일.txt 를 읽기모드 ‘r’ 로 파일을 열고 readline() 명령을 사용해서 해당 파일의 첫 번째 줄을 읽어 화면에 보여주는 기능을 하고 있습니다.
기존에 만들어 놨던 신규 파일이 그대로 있으면 그 파일의 첫 번째 줄을 화면에 출력합니다.

Python
1 번째 줄 입니다.
readlines 함수 이용

여기서 만약 첫 번째 줄만이 아니라 전체 줄을 화면에 출력하려면 어떻게 할까요?

Python
# reading_all_test.py
file = open(r"d:\test\신규파일.txt", 'r')
while True:
    line = file.readlines()
    if not line: break
    print(line)
file.close()

위 코드를 실행해 보면 이전에 print 문으로 출력 했던 것과 동일하게 나오는 것을 확인 할 수 있습니다.

Python
['1 번째 줄 입니다.\n', '2 번째 줄 입니다.\n', '3 번째 줄 입니다.\n', '4 번째 줄 입니다.\n', '5 번째 줄 입니다.\n', '6 번째 줄 입니다.\n', '7 번째 줄 입니다.\n', '8 번째 줄 입니다.\n', '9 번째 줄 입니다.\n', '10 번째 줄 입니다.\n']

readlines 함수를 사용하면 파일의 모든 줄을 읽어서 하나의 줄 씩 리스트 요소로 가지고 있게 됩니다.
직전에 사용했던 readline 함수와 차이점은 끝에 ‘s’ 가 하나 더 붙어 있다는 걸 유의해야 할 듯 합니다.

다음 포스팅에서는 파일 읽기의 여러가지 방법에 대해 좀 더 알아보겠습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

34. 파이썬 – 파일 읽고 쓰기(파일 생성)

34. 파이썬 – 파일 읽고 쓰기(파일 생성)

여태까지 공부한 내용들에서 입력을 받을 때는 사용자가 직접 입력하는 방식을 사용하고, 출력 할 때는 화면에 출력을 했습니다.


그러나 입출력 방식이 꼭 이렇게만 있는 것은 아닙니다.
이번 시간에는 파일을 통해서 입출력 하는 방식에 대해 공부해 보겠습니다.
파일을 새로 만들고 프로그램에서 나온 결과값을 역시 새 파일로 출력해 보겠습니다.
또한 파일에 기록된 내용을 읽고, 새로운 내용을 추가하는 방법도 공부해 보겠습니다.

파이썬 입출력

파일 읽고 쓰기

파일 생성

다음 코드를 실행해 보겠습니다.

Python
file = open("신규파일.txt", "w")
file.close()

위 코드를 실행해 보면 프로그램이 실행된 디렉토리에 파일이 하나 생성 된 것을 확인 할 수 있습니다.

34. 파이썬 - 파일 읽고 쓰기

위 코드에서 사용된 open 은 내장함수로 파일을 생성하기 위해 사용되었습니다.
open 함수는 아래 형식처럼 ‘파일 이름’과 ‘파일 열기 모드’를 입력받고 결과값으로 파일 객체를 리턴하게 됩니다.

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

파일 열기 모드에는 여러가지가 있습니다.

  • r – 읽기 모드 : 파일을 읽기만 할때 사용됩니다.
  • w – 쓰기 모드 : 파일에 내용을 기록하고자 할 때 사용됩니다.
  • a – 추가 모드 : 파일의 마지막에 새로운 내용을 추가 하고자 할 때 사용됩니다.

주의 해야 할 건 파일을 쓰기 모드로 열게 되면 이미 파일이 존재할 경우에 원래의 내용은 모두 없어지고, 파일이 존재하지 않는다면 새로운 파일이 생성된다는 것입니다.
위 예제로 나온 코드는 해당 폴더에 파일이 없는 상태에서 신규파일.txt 를 쓰기 모드 ‘w’로 열었기 때문에 신규파일.txt 라는 이름의 새로운 파일이 현재 폴더에 생성된 것입니다.
만일 신규파일.txt 를 다른 폴더에 생성하려 한다면 아래처럼 하시면 됩니다.

Python
file = open("D:/test/신규파일.txt", "w")
file.close()

하지만 위처럼 다른 폴더를 선택해서 파일을 만들려고 한다면 해당 경로에 폴더는 이미 생성이 되어있어야 오류가 안날겁니다.
그리고 위 코드에서 사용되는 file.close() 명령은 열려 있는 파일의 객체를 닫아 주라는 의미입니다.
이 문장은 생략해도 되긴 합니다.
왜냐면 파이썬에서는 프로그램을 종료할 때 파이썬 프로그램이 열려있는 파일의 객체를 자동을 닫아주기 때문입니다.
그러나 그렇다고 해도 close()를 사용해서 직접 열려있는 파일을 닫아 주는 것이 좋습니다.
이유는 쓰기모드로 열었던 파일을 닫지 않고 다시 사용하려고 한다면 오류가 발생할 수 있기 때문입니다.

파일 경로와 슬래시(/)

보통 윈도우에서 파일 경로를 표현 할 때는 경로에 역슬래시(\) 를 사용해 D:\ 식으로 표현을 합니다.(실제 화면상에서는 \ 로 보이기도 합니다.)
하지만 위 코드에서는 슬래시(/)를 사용해 D:/test/신규파일.txt 라고 표현 했습니다.
만약 역슬래시를 사용해 경로를 표현하고자 한다면 D:\\test\\신규파일.txt 처럼 역슬래시 2개를 연달아 붙여서 사용합니다.
또 다른 방법으로는 r”D:\test\신규파일.txt” 이라고 표현을 해주면 문자열 앞에 위치한 r 문자(Raw String)와 문자열이 만나 경로를 표현해 주게 됩니다.
이런식으로 표현을 안 해주면 “D:\new\test\신규파일.txt” 처럼 \n 이스케이프 문자가 있을 경우에 줄바꿈 문자로 잘못 판단 되어 엉뚱한 파일 경로로 판단할수 있기 때문입니다.

이번 시간에는 파일 입출력 중 파일 읽고 쓰기의 첫번째 시간으로
파일을 생성하는 방법에 대해 공부해 봤습니다.
다음 시간에는 파일을 쓰기 모드로 열어서 내용을 쓰는 방법에 대해 공부해 보도록 하겠습니다.

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

34. 파이썬 - 파일 읽고 쓰기(파일 생성)