상세 컨텐츠

본문 제목

[프로그래밍] Python 파이썬 파일 입출력 방법. 읽기, 파일 쓰기 방법

Study/Python

by 휀스 2014. 10. 27. 01:32

본문



[프로그래밍] Python 파이썬 파일 입출력 방법. 읽기, 파일 쓰기 방법


자세한 내용은 https://docs.python.org/2/tutorial/inputoutput.html 를 참고하면 됩니다.


write() read() readline() readlines() seek() tell()




어떤 언어를 사용하던 데이터의 입출력은 기본적으로 요구되는 기능들 입니다. 아래 사용하는 언어는 Python 2.7.4 입니다.


파일 입출력의 기본 함수는 open() 입니다. 따로 import 해야할 것은 없네요.


f = open("filename.txt", "w")

f.close()


이 두 라인을 실행하면 filename.txt 라는 파일이 생성됩니다.

보면 알 수 있듯 첫번째 인자는 파일 이름이며 두번째 인자는 쓰기 모드 (w)로 열 것인지 읽기 모드(r)로 열 것인지를 설정해 주는 부분입니다. 파이썬엔 특이하게 추가모드(a) 라는 것이 있네요. 추가모드로 열면 파일의 마지막 부분에 새로운 내용이 더해진답니다.


w 옵션으로 파일을 열면 기존 내용이 모두 삭제가 되니 주의해야 합니다.


w 모드나 a 모드로 파일에 내용을 쓰는 명령어는 write 입니다.


f = open("filename.txt", "w")

f.write("First writing\n")

f.close()


파일의 내용을 읽는 방법은 readline() 과 readlines() , read() 세가지 입니다. 세가지의 차이점은 파일 읽는 양과 형식의 차이 입니다.


readline() : 한줄을 읽어 return 합니다.

readlines() : 파일 전체를 읽어 list 형태로 return 합니다.

read() : 파일 전체를 읽어 문자열로 return 합니다.


line1

line2

line3

line4

line5


로 저장된 new.txt 라는 파일이 있을 경우 아래와 같이 사용될 수 있습니다.


f = open("new.txt","r")

print "f.readline()\n"

data = f.readline()

print data

print f.tell()

print "f.readlines()\n"

data = f.readlines()

print f.tell()

for line in data: 

    print(line)

f.seek(0)

print "f.read()\n"

data = f.read()

print data

f.close()


위의 소스에서 보듯 파일의 읽는 위치를 조절하는 방법과 현재 어느부분 까지 파일을 읽었는지 확인 하는 방법은 tell() 과 seek() 입니다.


위 내용의 실행 결과는 아래와 같습니다.


f.readline()


line1


6

f.readlines()


30

line2

line3

line4

line5


readline() 함수로 첫 line 을 읽었으므로 f.tell() 은 6을 return 합니다. 현재 파일의 6 번째 문자를 읽을 차례라는 것 입니다.

이후 readlines() 함수는 6번째 문자부터 문서의 나머지 부분을 모두 읽어줍니다. 

이때 f.tell() 의 결과는 30 입니다. 문서의 끝이지요.


f.read()


line1

line2

line3

line4

line5



이 상태에서 f.seek(0) 을 실행하지 않고 바로 f.read() 를 실행하면 읽을 내용이 없으므로 아무것도 출력되지 않습니다.

f.seek(0) 으로 문서의 처음으로 돌아간 후 f.read() 를 사용하여야 문서 전체를 읽을 수 있습니다.


이렇게 간단한 몇개의 함수로 툴 개발에 필요한 file 입출력 기능은 다 정리가 될 것 같네요.


이상 [Python] 파이썬 파일 읽기, 파일 쓰기 방법 write() read() readline() readlines() seek() tell() 에 대한 글 이였습니다



2단



관련글 더보기