파일
디스크에 있는 파일을 읽거나 쓰는 데 사용.
파일 개체는 디스크의 파일에 대한 참조를 얻는 데 사용.
파일 개체를 열어서 읽고, 쓰고, 추가하는 등의 여러 작업을 하는 데 쓰인다.
단순히 open(파일명[, 모드]) 함수를 써서, 파일 개체를 반환하며 처리를 위하여 변수에 할당할 수 있다.
파일이 아직 디스크에 존재하지 않으면, 그때 자동으로 생성된다.
모드 인자는 파일에 대하여 어떤 종류의 처리를 하고자 하는지 알려주는 데 쓰인다.
이 인자는 선택사항이며 생략할 경우에는 파일을 읽기 전용 모드로 열게 된다.
open(name[, mode[, buffering]])
파일 작업의 타입
모드 | 설명 |
---|---|
‘r’ | 읽기 전용 |
‘w’ | 쓰기(주의: 파일에 다른 것이 있다 하더라도 경고 없이 덮어 씀) |
‘a’ | 추가 |
‘r+’ | 읽기 및 쓰기 |
‘rb’ | 이진(binary) 파일 읽기 |
‘wb’ | 이진 파일 쓰기 |
‘r+b’ | 이진 파일 읽기 및 쓰기 |
파일 열기 예제코드
>>> # 파일을 열고 변수 f에 할당
>>> f = open('newfile.txt','w')
파일을 다루는 코드
>>> # 파일을 생성하고, 내용을 기록한 다음 읽음
>>> f = open('newfile.txt','r+')
>>> f.write('This is some new text for our file\n')
>>> f.write('This should be another line in our file\n')
>>> # 기록된 내용의 끝에 와 있으므로 아무 행도 읽지 못함
>>> f.read()
''
>>> f.readlines()
[]
>>> f.tell()
75L
>>> # 파일의 시작 부분으로 위치 이동
>>> f.seek(0)
>>> f.read()
'This is some new text for our file\nThis should be another line in our file\n'
>>> f.seek(0)
>>> f.readlines()
['This is some new text for our file\n', 'This should be another line in our file\n']
>>> # 파일을 닫고 반납
>>> f.close()
파일 객체 메서드
메소드 | 설명 |
---|---|
close() | 파일을 닫음 |
fileno() | 정수 파일 기술자(descriptor)를 반환 |
flush() | 출력 버퍼를 밀어버리거나 내용을 파일에 쓰고서 지움 |
read(x) | x 바이트만큼 읽음 |
readline(x) | 한 행에 대하여 최대 x개까지의 문자를 읽음. 또는 x가 생략된 경 우에는 전체 행을 읽음. |
readlines(size) | 파일의 모든 행을 읽어 목록에 넣음. size > 0인 경우, 그 수만큼 의 문자를 읽음. |
seek() | 커서를 파일의 새로운 위치로 이동 |
tell() | 커서의 현재 위치를 반환 |
truncate(size) | 파일의 size 만큼을 버린다. 특정하지 않았을 경우 size의 기본값 은 현재 위치가 된다. |
write(string) | 파일 개체에 string을 기록 |
writelines(seq) | 순서형 자료에 포함된 모든 문자열을 구분자 없이 기록 |
파일 속성
>>> my_file.closed
False
>>> my_file.mode
'r'
>>> my_file.name
'mynewfile.txt'
Good practice to use the with keyword
>>> with open('workfile', 'r') as f:
... read_data = f.read()
>>> f.closed
True