Python도 다른 프로그래밍 언어와 똑같이 파일을 읽고, 쓰는 작업을 지원한다.
file = open('test.txt','r') #파일 열기 'r'은 파일을 읽겠다는 뜻.(read)
contents = file.read() #파일을 읽어서 contents변수에 저장
file.close() #파일 닫기
print(contents)
>>I like Python
#test.txt I like Python |
파일을 읽고 쓰는 법은 위와 같다.
파일을 열었으면 작업을 끝낸 후 꼭 닫아주어야 하는데, 위의 방식을 사용한 채로 작업을 진행하다 문제가 생기면
file.close() 문을 실행할 수 없게 된다. 해당 문장을 생략해도 프로그램을 종료할 때 파이썬이 열려 있는 파일의 객체를 자동으로 닫아주기는 하지만, close()를 사용해 열려 있는 파일을 직접 닫아주는 것이 좋다. 쓰기모드로 열었던 파일을 닫지 않고 다시 사용하려고 하면 오류가 발생하기 때문이다.
파이썬은 이와 같은 상황에 대비해 오류가 발생하든 안 하든 항상 파일을 깔끔하게 정리할 수 있게 with 문을 제공한다.
#with문 형식 with <<expression>> as <<variable>> : 작업 코드.... |
사용 예시
with open('test.txt','r') as file:
contents = file.read()
print(contents)
x=file.read() #with문 밖에서 file을 읽으려고함. 오류발생. (파일이 잘 닫혔다는 뜻)
print(x)
>>I like Python
Traceback (most recent call last):
File "...................................", line 6, in <module>
x=file.read();
ValueError: I/O operation on closed file.
Process finished with exit code 1
with문을 사용하면 close문을 쓰지 않아도 파일이 잘 닫히는 것을 볼 수 있다.
특수한 경우가 아니라면 with문을 사용하자.
어떠한 이유가 있어 with문을 사용하지 않는다면 잊지말고 close()문으로 파일을 잘 닫아주도록하자.
출처 : 파이썬 프로그래밍 교과서(개정 3판)
'Python' 카테고리의 다른 글
Python - 컬렉션 정리 (0) | 2020.08.04 |
---|---|
Python - 딕셔너리 키(key), 값(value) 도치 (0) | 2020.08.04 |
Python - is와 ==의 차이 (and,or,&,|) (1) | 2020.07.29 |
Python - 에일리어스(alias) (0) | 2020.07.29 |
Python - 모듈(module) (0) | 2020.07.27 |