[Python] Python에서의 with문 사용하기
업데이트(2019.02.19): 파일열기모드 관련 내용 추가
python에서 with문의 용도와 쓰임을 알아보자
소개
기본적으로 거의 모든 프로그래밍 언어가 파일 입출력을 지원하며(어찌보면 당연한 이야기인가?…) 그러한 파일 입출력을 할 때 해당 파일을 위해 open과 close를 해줘야한다.
그러한 부분이 python에도 존재하며 혹시나 우리가 했을 법한 실수인 close를 해주는 부분을 빼먹을 수도 있기에 하나의 with문으로 묶어서 사용 할 수 있다.
기본적인 사용법
- 기본적인 사용법은
with expression as target: suite
의 형태로 사용하면 된다.
다음 아래와 같은 코드를
file_data = open('file.txt')
print(file_data.readline(), end="")
file_data.close()
아래처럼 바꿀 수 있다.
with open('file.txt') as file_data:
# 기본적으로 사용하는 함수를 with문 안에 사용하면 되며
# with문을 나올 때 close를 자동으로 불러줍니다.
print(file_data.readline(), end="")
파일 열기 모드
-
파일열기모드: 파일열기모드란 파일을
Binary
형태로 읽을지 아니면인코딩
단위로 읽을지, 파일을 읽을건지 쓸건지 아니면 동시에 할건지에 대한 부분을 정하는 지시자라고 볼 수 있습니다. r
: 읽기 모드, 파일을 읽을 때 사용합니다.w
: 쓰기 모드, 파일에 쓸 때 사용하며 파일이 이미 동일한 이름으로 존재한다면 덮어씁니다.a
: 추가 모드, 존재하는 파일에 추가할 때 사용하며 파일이 없다면 생성합니다.r+
,w+
,a+
: 읽기모드 + 쓰기모드,w+
와a+
의 차이는 위와 같습니다.rb
,wb
,ab
,rb+
,wb+
,ab+
: 각각의 모드들은 위와 동일하나 Binary 포맷으로 읽거나 쓰는걸 진행합니다.
쓰기(Write)
with open('file.txt', 'w') as file_data:
file_data.write("First\n")
file_data.write("Second")
읽기(Read)
with open('file.txt', 'r') as file_data:
for line in file_data:
print(line)
추가(Append)
with open('file.txt', 'a') as file_data:
file_data.write("Third\n")