파일 다루기 기본
- 파이썬에서 파일을 다룰 때 기본 내장 함수 open() 함수를 활용합니다.
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- open() 함수 인자 확인
- file : 파일 경로
- mode : 파일이 열리는 모드
- ‘r’ : 읽기 용으로 열림 (default)
- ‘w’ : 쓰기 위해 열기, 파일을 먼저 자른다.
- ‘x’ : 베타적으로 생성을 위해 열리고, 이미 존재하는 경우 실패
- ‘a’ : 쓰기를 위해 열려 있고, 파일의 끝에 추가하는 경우 추가합니다.
- ‘b’ : 2진 모드 (바이너리 모드)
- ‘t’ : 텍스트 모드 (default)
- ‘+’ : 업데이트 (읽기 및 쓰기)를 위한 디스크 파일 열기
- ‘U’ : 유니버셜 개행 모드 (사용되지 않음)
- buffering : 버퍼링끄기는 0(바이너리모드에서만 동작함), 라인모드는 1 (텍스트 모드에서만 가능), 고정 크기로 보내려면 임의의 바이트수를 1보다 큰 양의 수로 입력, 기본 정책은 아래와 같습니다.
- 이진 파일은 고정 크기 청크로 버퍼링됩니다. 버퍼의 크기는 기본 장치의 "블록 크기"를 결정하고 다시 떨어지는 경험적 방법을 사용하여 선택됩니다 io.DEFAULT_BUFFER_SIZE. 많은 시스템에서 버퍼는 일반적으로 4096 또는 8192 바이트 길이입니다.
- "대화식"텍스트 파일 ( isatty() 반환 되는 파일 True)은 회선 버퍼링을 사용합니다. 다른 텍스트 파일은 바이너리 파일에 대해 위에서 설명한 정책을 사용합니다.
- encoding : 파일을 디코딩하거나 인코딩하는데 사용되는 이름, 대부분 utf-8 이지만 모든 시스템이 utf-8이라는 보장이 없으므로 명시적으로 하는 것이 좋다.
- 파일 객체는 반드시 열고 작업이 완료되면 반드시 파일을 닫아야 합니다.
- 파일을 닫지 않으면 버퍼링되어 있는 데이터는 기록되지 않고 소실될 수 있습니다.
- file 객체의 close() 메소드로 파일을 닫습니다.
f = open('test.txt', mode='wt', encoding='utf-8')
f.write('파이썬으로 파일을 작성하고 있습니다.\\n')
f.close()
f = open('test.txt', mode='rt', encoding='utf-8')
print(f.read())
# 파이썬으로 파일을 작성하고 있습니다.
#
f = open('test.txt', mode='at', encoding='utf-8')
f.write('자바로 파일을 작성하고 있습니다.')
f.close()
f = open('test.txt', mode='tr', encoding='utf-8')
print(f.read())
# 파이썬으로 파일을 작성하고 있습니다.
# 자바로 파일을 작성하고 있습니다.
텍스트 모드 (문자열 모드)
'r'
: 읽기 전용 모드 (기본값).
- 파일이 존재해야 함.
- 파일 포인터는 파일의 시작 부분에 위치.
'w'
: 쓰기 전용 모드.
- 파일이 존재하면 내용을 모두 지우고 새로 씀.
- 파일이 없으면 새로 만듦.
- 파일 포인터는 파일의 시작 부분에 위치.
'a'
: 추가 모드.
- 파일이 없으면 새로 만듦.
- 파일 포인터는 파일의 끝 부분에 위치.
'r+'
: 읽기 및 쓰기 모드.
- 파일이 존재해야 함.
- 파일 포인터는 파일의 시작 부분에 위치.
'w+'
: 읽기 및 쓰기 모드.
- 파일이 존재하면 내용을 모두 지우고 새로 씀.
- 파일이 없으면 새로 만듦.
- 파일 포인터는 파일의 시작 부분에 위치.
'a+'
: 읽기 및 추가 모드.
- 파일이 없으면 새로 만듦.
- 파일 포인터는 파일의 끝 부분에 위치.
바이너리 모드
'rb'
: 바이너리 읽기 전용 모드.
- 파일이 존재해야 함.
- 파일 포인터는 파일의 시작 부분에 위치.