파이썬이든 다른 프로그래밍 언어가 되었든, 파일의 입출력 관리는 모든 언어에서 지원된다. 이 때 파일을 open하고 close하는 동작이 필요하다.
파이썬에서는 이런 open을 사용 후 close를 하지 않아 발생하는 오류를 방지하기 위해 with문을 사용한다.
예를 들어 다음 코드를
textfile = open("text_file.txt")
print(textfile.readline(), end="")
textfile.close()
다음과 같이 바꿀 수 있다.
with open("text_file.txt") as textfile:
#다음과 같이 사용할 함수를 with문 안에 사용한다.
#모든 동작을 마친 후 자동으로 close를 사용해 빠져나온다.
print(textfile.readline(), end="")
파일을 open할 때 그 파일을 binary로 읽을 것인지, 인코딩 단위로 읽을 것인지, 읽기모드로 접근할 것인지, 쓰기모드로 접근할 것인지, 둘 다인지 등을 제어하는 지시자이다.
r
: 읽기모드, 파일을 읽을 때 사용한다. 내용을 변경하거나 추가할 수 없다.
w
: 쓰기모드, 파일에 쓸 때 사용한다. 파일이 이미 동일한 이름으로 존재하면 덮어쓴다.
a
: 추가모드, 존재하는 파일에 추가할 때 사용하며, 파일이 없다면 새로 생성
r+
, w+
, a+
: 읽기모드 + 쓰기모드 w+와 a+의 차이는 위와 같다.
rb
, wb
, ab
, rb+
, wb+
, ab+
: 모드의 동작은 동일하나 Binary 포맷으로 읽고 쓴다.
with open("text_file.txt", 'w') as textfile:
textfile.write("Hello\n")
textfile.write("World")
with open("text_file.txt", 'r') as textfile:
for line in textfile:
print(line)
with open("text_file.txt", 'a') as textfile:
textfile.write("Third\n")