9. 파일 입출력

2016. 11. 18. 15:24Programming Languages/PYTHON

1)입력 

c나 c++에서 파일을 불러오고 내보낼 때 생성했던 stream의 개념을 이해하고 있다면 파이썬에서의 파일 입출력도 무리 없이 받아들일 수 있을 것이다.



파일에 데이터를 쓰고자 할 때는 다음과 같이 코드를 작성해야 한다.

1
2
3
4
f=open("test.txt","w")           #사용하고자 하는 파일을 연다. 이때 첫번째 인자는 파일명, 두번째 인자는 모드이다.
f.write("Hello world!\n^^!")     #수정모드는 쓰기의 w, 읽기의 r, 이어쓰기의 a가 있다.
#12                              #write함수를 사용하면 입력한 문자열의 바이트수를 반환한다.    
f.close()                        #파일을 다 이용하면 반드시 close해야한다.
cs



write함수는 인자로 문자열을 받지만, 문자열 대신 리스트 값을 받아 파일에 쓰는 writeline()함수도 있다. 리스트 사이의 공백 없이 통으로 붙여서 써지므로 공백을 넣고 싶다면 리스트의 각 원소에 \n를 추가해줘야한다.

1
2
3
4
5
6
f=open("test.txt","w")
f.writeline(["Apple","Bird","Corn","Dog"]
f.close()
f=open("test.txt","r")
f.read()
#AppleBirdCornDog
cs




2)출력 

파일에 입력되어 있는 데이터를 불러오고자 할 때는 다음과 같이 코드를 작성해야한다. 

1
2
3
4
5
6
f=open("test.txt","r")       #이번에는 읽기 모드로 좀 전의 test.txt파일을 열어보자. 
f.read()                     #read함수는 \n이나 \t과 같은 기호를 적용하지 않고 그대로 반환한다. 
#'Hello world!\n^^!'         
f.read()                     #연이어서 read를 사용하려고 하면
#''                          #처음과 다른 결과가 나온다. 왜냐면 위에서 read를 한 번 호출해서 어느위치의 데이터를 
f.close()                    #읽어올지 가리키는 파일 포인터가 파일의 맨 끝으로 이동했기 때문이다.
cs


read함수는 파일의 내용을 통채로 읽어오지만, 라인별로 한 줄씩 읽고 싶을때는 readline()함수를 사용하면 된다.

또 각각의 라인을 원소로 가지는 리스트 형태로도 파일 내용을 읽어올 수 있는데, 그때는 readlines()함수를 사용하면 된다. read, readline, readlines 모두 커서의 위치로부터 데이터를 읽어오므로 같은 부분을 연이어 읽어들일 수 없다. 한 번 읽으면 커서의 위치가 옮겨지기 때문이다.

따라서 seek(0)를 이용해서 커서를 맨 앞으로 옮기거나 close후 다시 open해야한다.


'Programming Languages > PYTHON' 카테고리의 다른 글

10. 웹  (0) 2016.11.29
+) pip  (0) 2016.11.22
8. 객체(2) - 맹글링, 세 가지 메소드 타입, 덕 타이핑  (3) 2016.10.27
7. 객체(1)-객체 생성하기, 상속  (0) 2016.10.25
6. 모듈, 패키지, 프로그램  (0) 2016.10.23