파이썬에서 파일을 읽는 방법 또한 매우 간단하다. 기본적으로 파일 읽기나 쓰기를 할 경우 파일을 open해야 한다. 파일을 open함수로 열면 해당되는 파일의 파일 디스크립터를 반환한다. 쉽게 말해 해당파일을 다른 파일과 구별하기 위해서 붙이는 번호라고 생각하시면 된다. 또한 파일을 다 사용한 경우 close를 해야 한다.
파일 열기 모드
우리는 단순하게 더블클릭으로 문서파일을 열 수 있다. 하지만 프로그램 내부적으로는 여는 방법에는 몇 가지 방법이 있는데 이것이 열기 모드다.
다음은 C언어에서의 파일 열기 모드인데 파이썬의 경우도 이 모드를 사용한다.
r, w, a, r+, w+, a+ 여섯 가지 모드와 옵션으로 t 또는 b가 붙을 수 있다.
r : 읽기 모드, 파일 없으면 Error
r+: 읽기 또는 쓰기모드, 파일 없으면 Error
w : 쓰기 모드, 파일 없으면 새로 만든다.
w+ : 읽기 또는 쓰기 모드, 파일 없으면 새로 만든다.
a : 파일 추가(FP가 파일의 끝으로 이동)로 쓰기 모드, 파일 없으면 새로 만든다.
a+ : 읽기 또는 파일 추가 모드, 파일 없으면 만든다.
t(텍스트 모드로 파일을 연다), b(바이너리 모드로 파일을 연다)
'w+t'는 텍스트 쓰기모드로 파일을 연다는 뜻
주의 : w+와 r+은 쓰기 모드 시에 조금 다른 작업을 한다.
w+의 경우 기존 파일에 있던 데이터를 완전 지워버리고 새로 쓴다.
r+의 경우 기존 파일내용은 그대로 두고 그 위에 덮어 쓰기를 한다.
예)
기존 파일 : Hello World!
w+모드로 aa를 입력하면 파일 내용-> aa
r+모드로 aa를 입력하면 파일 내용 -> aallo World!
a+모드로 aa를 입력하면 파일 내용 -> Hello World!aa
파일 쓰기
파일을 열고서 쓰기작업을 해보자.
기본 파이썬 디렉토리에 파일이 생성된다. C:\Python27 라면 여기에 파일이 생성된다.
라인단위로 쓰기
write(문자열)
writelines(리스트)
의 두개의 함수를 이용하면 된다.
writelines함수는 write와 인수만 다를 뿐 작동은 동일하다. 라인단위로 나누기 위해서는 '\n' 문자를 라인의 끝에 붙여주기만 하면 된다.
write함수를 사용하는 경우
write('\n'.join(리스트))의 형태로 사용한다.
join 함수는 리스트를 문자열 형태로 만들어준다. 앞에 '\n'는 각 요소 사이에 삽입할 문자열이다.
writelines를 사용하는 경우
함수 이름에 속으면 다음과 같은 결과가 나온다.
write와 writelines는 인수의 자료형만 다를 뿐 하는 일이 똑같다. 그래서 리스트 자료형을 입력할 때 줄 단위로 '\n'를 직접 넣어 주어야 한다.
파일 읽기
파일 읽기는 매우 간단하다. read()함수는 위와 같이 통 문자열을 반환한다. 따라서 이 문자열을 리스트로 반환 받고 싶다면 split()함수를 이용한다.
따라서 단어의 개수를 알 수 있다.
연습) 단어의 개수
라인단위로 읽기
위 예를 라인단위로 읽어보자.
readline
readline함수는 한 라인씩 문자열로 반환한다.
readlines
라인들을 리스트로 반환된다. 따라서 len함수로 줄의 수를 알 수 있다.
기타 방법
파일 핸들을 가지고 라인단위로 읽을 수 있다.
xreadlines함수로도 가능하다.
이렇게 C언어에 비해서 매우 간단하게 파일을 조작할 수 있다.