는의 아래 완성도 예를 위해, 문자열을 변환 foo
기능을 살펴 보자 :동일한 with 절에서 2 개의 컨텍스트 관리자를 사용하여 파일을 현재 위치에서 수정하는 것이 안전합니까?
def foo(data):
### processes data in a fancy way ###
return data.lower() # :P
가이 같은 자리에서 파일을 수정하는 전형적인 패턴을 대체하는 좋은 생각이 될 것입니다 경우 궁금 해서요 이 다른 하나
# snippet1
with open(path, "r") as f:
out = foo(f.read())
with open(path, "w") as f:
f.write(out)
:
# snippet2
with open(path, "r") as f1:
out = foo(f1.read())
with open(path, "w") as f2:
f2.write(out)
이 가능한 모든 시나리오에서 할 안전합니까?
관련 정보 https://www.python.org/dev/peps/pep-0343/
컨텍스트 관리자가이 시나리오와 관련이 있다고 생각하지 않습니다. 문제는 단일 파일에 두 개의 핸들이있는 것입니다. – BartoszKP