본문 바로가기
Python/왕초보를 위한 파이썬

6.1. 파일 입출력

by 가므자 2012. 4. 4.

이번 시간에는 파일을 다루는 방법을 알아보겠습니다. 파일명을 바꾼다거나, 파일을 복사하고, 지우는 일들은 지난 시간에 살펴본 os 모듈이나, shutil이라는 모듈을 사용하면 되죠. 지금 배울 것은 그런 것이 아니라 파일의 내용을 읽고, 쓰는 방법입니다.

파일을 다룰 수 있게 되면 프로그램과 데이터를 따로 관리할 수 있지요. 만약 주소록 프로그램을 만든다면 연락처를 담은 데이터 파일을 따로 만들어두었다가, 새 친구가 생길 때마다 그 데이터 파일에 연락처를 추가해주면 되겠죠?

먼저 메모장으로 텍스트 파일 하나를 만들어봅시다.

Programming is fun.
Very fun!

You have to do it yourself...

각자 파이썬 스크립트를 저장하기 위한 폴더를 만들어두셨을 거예요. 거기에다가 Python_for_Fun.txt와 같은 이름으로 저장해주세요. 그리고나서 아래 예제를 따라해보세요. 폴더와 파일의 이름은 각자 지으신 대로 써주시구요.

>>> f = open('C:\python_newbie\Python_for_Fun.txt')
>>> f.read()
'Programming is fun.\nVery fun!\n\nYou have to do it yourself.'

파일을 열어서 f라는 이름을 붙여주고 다시 그것을 읽었죠? 여러분도 잘 읽어지나요?

그런데, 좀 이상한 것이 있죠? 아까 파일을 작성할 때 줄을 바꿔가면서 썼던 것이 모두 한 줄에 나옵니다. 쓴 적이 없는 글자도 끼어 있구요.

잘 보면 줄을 바꾼 곳마다 ‘\n’이 들어있다는 것을 알 수 있지요. ‘\n’은 다음과 같이 문자열을 출력할 때 ‘줄 바꿈’을 의미한답니다.

>>> print '야호~\n호야~'
야호~
호야~

우리가 메모장에서 텍스트 파일을 작성할 때에도 줄을 바꿀 때마다 이런 개행 문자가 포함되었던 것이지요. 위에서는 f.read() 함수가 돌려준 문자열을 그대로 보았기 때문에 우리가 개행 문자도 볼 수 있었던 것이고, 이 문자열을 print 하면 정상적으로 줄 넘김이 된 상태로 보입니다.

>>> buffer = f.read()
>>> print buffer
Programming is fun.
Very fun!

You have to do it yourself...

이번엔 파일에 글을 써볼까요?

>>> letter = open('C:\python_newbie\letter.txt', 'w') # 새 파일을 열고
>>> letter.write('Dear Father,') # 아버님 전상서
>>> letter.close() # 닫아준다

이번엔 파일명 뒤에 ‘w’라고 써주었죠? 아까 파일의 데이터를 읽기만 했을 때와는 달리, 파일에 데이터를 쓰려고 할 때는 미리 ‘파일에 데이터를 쓰겠다는 사실을 알려줄 필요가 있기 때문입니다.

그 다음에 몇 자 적어주고 나서 파일을 닫았습니다.

이제 해당 폴더를 보시면 letter.txt 파일이 있구요, 그걸 메모장으로 열어보시면 파이썬으로 써준 글자가 고스란히 적혀있을 거예요. 훌륭하죠?

만약, 파일에 데이터를 쓴 다음에 close()로 닫아주지 않았으면 메모장으로 봐도 아무 글자도 없을 거예요. 그러니 꼬옥~ 닫아주셔야 해요~.

예리하신 분들은 그 전의 예제에서 파일을 읽었을 때는 왜 안 닫았는지 궁금해 하시겠죠? 닫아주면 좋답니다.^^ 하지만 우리가 잊어버리더라도 파일이 더 이상 필요 없으면 파이썬이 알아서 닫아준다고 하네요. 참 편하죠?

혹시 letter.txt가 아니라 python.txt 파일에다가 'Dear Father'라고 쓰신 분 계신가요? 분명히 계실 것 같은데…

원래 들어있던 내용이 다 날아갔죠? 시키는대로 안 하니까 그렇죠. 히히히

하지만, 전 시키는 대로만 하는 사람은 싫어합니다. 잘 하셨어요.

파일에 데이터가 원래 들어있을 때 ‘w’ 모드로 파일을 열면 원래 있던 데이터가 없어져버린답니다. 파일에 들어있는 데이터를 지우지 않고 내용을 추가하려면 ‘a+’ 모드를 지정해줘야 하죠.

>>> letter = open('C:\python_newbie\letter.txt', 'a+')
>>> letter.write('\n\nHow are you?')
>>> letter.close()

이제 letter를 다시 열어보시면 제대로 되어있을 거예요.

오늘 배운 것은 간단하면서도 아주 쓸모 있답니다. 이것을 가지고 무엇을 할 수 있을지 한 번 생각해보세요.

출처 : wikidocs 왕초보를 위한 파이썬

'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글

6.3. 파일을 입맛대로  (0) 2012.04.04
6.2. 한 줄 씩 다루기  (0) 2012.04.04
5.4. 무작위(Random) 뭉치  (0) 2012.04.04
5.3. 여러가지 뭉치  (0) 2012.04.04
5.2. 뭉치 가져오기  (0) 2012.04.04

댓글