open() 함수와 함께 with ~ as문을 사용하면 명시적으로 close 함수를 호출하지 않아도 파일이 항상 닫힘.
with open(파일이름) as 파일 객체: #파일객체 = open(파일이름)
#코드블록
#이곳에서 읽거나
#쓰기를 한 후
#그냥 코드를 빠져 나가면 됨. #with 덕분에 close() 하지 않아도 됨
with open('test.txt','r') as file :
str = file.read()
print(str)
#file.close
문자 | 의미 |
---|---|
‘r’ | 읽기용으로 열기(기본값) |
‘w’ | 쓰기용으로 열기. 이미 같은 경로에 파일이 존재하면 파일내용을 비움 |
‘x’ | 배타적 생성모드로 열기. 파일이 존재하면 IOError 예외 일으킴 |
‘a’ | 쓰기용으로 열기. 단, ‘w’와는 달리 이미 같은 경로에 파일이 존재하는 경우 기존 내용에 덧붙이기를 함 |
‘b’ | 바이너리 모드 - 바이트 단위 |
‘t’ | 텍스트모드(기본값) - 문자열 단위 |
‘+’ | 읽기/쓰기용으로 파일 읽기 |
errors | 의미 |
---|---|
‘strict’ | 인코딩 에러가 발생할 때 ValueError 예외를 일으킵니다. None과 똑같은 효과를 낸다. |
‘ignore’ | 이름 그대로 에러를 무시한다. |
‘replace’ | 기형적인 데이터가 있는 곳에 대체 기호(예를 들어 ‘?’)를 삽입한다. |
‘surrogateescape’ | U+Dc80 ~ U + DCFF 사이에 있는 유니코드 사용자 자유 영역의 잘못된 바이트를 코드 포인트로 나타낸다. |
‘xmlcharrefreplace’ | 파일에 기록하려는 텍스트 안에 지정된 인코딩에서 지원되지 않는 문자를 XML문자 참조로 바꿔서 기록 |
‘backslashreplace’ | 이 옵션도 역시 파일에 텍스트를 기록할 때만 사용. 현재 인코딩에서 지원되지 않는 문자를 역슬래쉬로 시작되는 이스케이프 시퀀스로 바꿔 기록 |