프로그래밍 언어/파이썬

파이썬 23. 파일 입출력

닉네임못짓는사람 2020. 11. 10. 10:55
반응형

이번 글에서는 파이썬에서 파일을 읽고 파일에 쓰는 법에 대해서 알아보도록 하겠습니다.

 

파일 생성


먼저, 데이터를 파일에 저장하는 법부터 알아봅시다.

그러려면 먼저 파일에 입력할 데이터와, 데이터를 입력할 파일이 필요할 것입니다.

파이썬에서 파일을 생성하는 방법은 다음과 같습니다.

f = open('newFile.txt', 'w')
파일 객체명 = open('파일경로', '모드')

먼저, 파일 객체명을 정해주시고 open이라는 함수를 사용합니다.

open함수의 인수로는 파일명과 모드가 기본적으로 필요한데, 파일명은 실행할 파일의 경로를 적어줍니다.

이때 경로를 적지 않고 파일명만 입력하면, 기본적으로 프로젝트의 root폴더를 경로로 지정합니다.

 

모드의 경우 파일을 어떤 방식으로 실행할지 지정하는 부분인데, 이 모드에 따라서 파일 객체로 할 수 있는 작업이 달라집니다.

모드는 다음과 같은 모드들이 있습니다.

r : 읽기 모드, 파일에서 데이터를 읽을 때 사용한다.
w : 쓰기 모드, 파일에 데이터를 쓸 때 사용한다.
a : 추가 모드, 파일의 끝에 데이터를 추가할 때 사용한다.

r과 w는 직관적으로 이해가 되실텐데, w의 경우 파일이 존재하지 않을 경우 새롭게 해당 경로에 파일을 생성합니다.

또한 a의 경우 파일의 끝에 데이터를 추가한다고 되어있는데, 기본적으로 파일을 쓰기 모드로 실행하게 될 경우

파일내의 모든 데이터가 지워지기 때문에 파일에 내용을 추가하고 싶을 때에는 a모드를 사용해야합니다.

파일에 데이터 쓰기


이제 실제로 파일에 데이터를 써보도록 합시다.

f = open('newFile.txt', 'w')
f.write("파일 생성\n")
f.write("1번째 줄\n")
f.write("2번째 줄\n")
f.write("3번째 줄\n")
f.write("4번째 줄\n")
f.close()

코드를 실행시키면 일단 파일명만 입력해주었기 때문에 프로젝트의 root폴더에 파일이 생성되었습니다.

그리고 파일에 데이터를 쓸 때는 write라는 함수를 사용하는데, 줄바꿈(\n)은 직접 추가해주셔야 합니다.

여기서 중요한 점은 파일을 다 사용하셧으면 꼭 close함수로 파일을 닫아주셔야 한다는 점입니다.

파일에서 데이터 읽기


다음은 위에서 생성한 파일의 내용을 읽어보도록 합시다.

먼저 파일에서 한 줄을 읽어오는 함수는 readline이라는 함수를 사용합니다.

f = open('newFile.txt', 'r')
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

위의 코드를 실행시키면 readline함수가 파일의 내용을 한 줄씩 반환해줍니다.

그런데 readline에는 인수도 없고 각각 독립적으로 실행시켯는데 몇 번째 줄을 읽을지 어떻게 아는걸까요?

이는 파일을 실행시켰을 때 '파일 포인터'라는 것이 존재하기 때문입니다.

이 파일 포인터는 파일 내에서 어떤 특정한 위치를 지정하고 있는 특별한 값이라고 생각하시면 됩니다.

파이썬에서는 이 파일 포인터의 위치와 함수를 보고 이를 기준으로 데이터를 쓰거나, 읽어오게 되는겁니다.

 

위에서 생성한 파일과 코드를 기준으로 이야기하면, 처음 파일을 실행하면 파일 포인터는 1의 위치에 있습니다.

여기서 readline함수를 실행하면 파일 포인터가 움직이면서 파일의 데이터를 읽어오고, 한 줄을 읽은 뒤 파일 포인터가 2에 위치합니다.

그 다음 readline함수를 다시 실행하면 3번에, 다시 실행하면 그 다음줄, 이렇게 파일 포인터가 계속 이동합니다.

 

다음은 파일의 내용을 전부 읽을 수 있는 readlines함수에 대해서 알아보도록 합시다.

이 readlines함수는 파일 내의 모든 줄을 읽어서 각 줄의 하나의 요소로 가지는 리스트를 반환해줍니다.

f = open('newFile.txt', 'r')
print(f.readlines())
f.close()

이 때는 리스트객체로 값을 반환해주기 때문에 줄바꿈기호(\n)가 그대로 입력되어있습니다.

 

마지막으로 동일하게 파일 전체를 읽는 함수인 read함수가 있습니다.

read함수는 파일의 내용 전체를 하나의 문자열로 만들어 반환해줍니다.

f = open('newFile.txt', 'r')
print(f.read())
f.close()

파일에 데이터 추가하기


다음은 이미 생성되어있는 파일에 데이터를 추가해서 쓰는 방법에 대해서 알아봅시다.

위에서 말했듯이 파일을 w모드로 실행하면 기존의 내용이 모두 사라지기 때문에 내용 추가시에는 꼭 a모드로 실행시켜야 합니다.

f = open('newFile.txt', 'a')
f.write("새로운 내용 추가")

이때는 파일 실행 모드만 달라질 뿐이고, 기본적으로 파일에 데이터를 쓰는 방법은 w모드와 동일합니다.

이 a모드로 파일을 실행하게 되면 파일 포인터는 파일의 가장 끝부분에 위치한다는 점을 유의하시길 바랍니다.

 

이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

파이썬 25. 클래스-2  (0) 2020.11.16
파이썬 24. 클래스-1  (0) 2020.11.11
파이썬 22. 함수-2  (0) 2020.11.04
파이썬 21. 함수-1  (0) 2020.11.03
파이썬 20. 반복문-while문  (0) 2020.11.02