일부 명령 줄 인수에 따라 입력이 파일 또는 표준 입력에서 오는 경우가 종종 있습니다. 출력도 마찬가지입니다. 나는 파이썬 3의 컨텍스트 관리자가 어떻게 작동 하는지를 정말로 좋아한다. 따라서 모든 내 open
호출을 with
문으로 호출하려고한다. 하지만이 경우에는 문제가 있습니다.리디렉션 된 I/O에 대한 컨텍스트 관리자
if args.infile:
with open(args.infile, "r") as f:
process(f)
else:
process(sys.stdin)
은 이미 서투른 상태이며 입력과 출력 모두 4 가지 조합을 제공해야합니다. 나는 더 쉬운 것을 원한다.
with (open(args.infile, "r") if args.infile
else DummyManager(sys.stdin)) as f:
process(f)
이 DummyManager와 비슷한 것이 Python 표준 라이브러리에 있습니까? 컨텍스트 관리자 프로토콜을 구현하는 것이지만 __enter__
메서드에서 고정 값을 반환하는 경우에만 사용할 수 있습니까? 나는 그런 클래스를위한 가장 가능성있는 위치가 contextlib 일 것이라고 추측한다. 그리고 내가 이것과 같은 것을 발견하지 못했기 때문에 아마도 그런 것은 없다. 추천할만한 다른 우아한 솔루션이 있습니까?
을()'3.2까지 컨텍스트 매니저 지원을 얻을하지 않았다. –