종종 파일 또는 파일이 지정되지 않은 경우 stdout에 데이터를 출력해야합니다. 다음 스 니펫을 사용합니다.
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
다시 작성하고 두 대상을 균일하게 처리하고 싶습니다.
이상적인 경우는 다음과 같습니다.
with open(target, 'w') as h:
h.write(content)
그러나 with블록을 떠날 때 sys.stdout이 닫히고 원하지 않기 때문에 이것은 잘 작동 하지 않습니다. 나는 원하지 않는다
stdout = open(target, 'w')
...
원래 stdout을 복원하는 것을 기억해야하기 때문입니다.
관련 :
- stdout을 Python의 파일로 리디렉션 하시겠습니까?
- 예외 처리-C ++와 비교하여 Python에서 예외 처리에 대한 흥미로운 기사
편집하다
랩핑 target하거나 별도의 기능을 정의하거나 컨텍스트 관리자를 사용할 수 있다는 것을 알고 있습니다 . 5 줄 이상 필요하지 않은 간단하고 우아하며 관용적 인 솔루션을 찾습니다.