9. 파일 입출력
2016. 11. 18. 15:24ㆍProgramming 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 |