본문 바로가기
Python/Python FAQ

Python 파이썬에서 "with open"을 사용하여 여러 파일을 어떻게 열 수 있나요?, How can I open multiple files using "with open" in Python?

by 베타코드 2023. 6. 10.
반응형

질문


한 번에 여러 파일을 변경하려고 합니다. 그러나 모든 파일에 쓸 수 있는 경우에만 iff를 작성할 수 있습니다. 여러 개의 열린 호출을 with 문과 결합할 수 있는 방법이 있는지 궁금합니다:

try:
  with open('a', 'w') as a and open('b', 'w') as b:
    do_something()
except IOError as e:
  print 'Operation failed: %s' % e.strerror

그렇지 않은 경우, 이 문제에 대한 우아한 해결책은 무엇일까요?


답변


Python 2.7 (또는 3.1)부터는 다음과 같이 작성할 수 있습니다.

with open('a', 'w') as a, open('b', 'w') as b:
    do_something()

(역사적 참고: 이전 버전의 Python에서는 때로 컨텍스트 매니저를 중첩시키기 위해 contextlib.nested()를 사용할 수 있습니다. 그러나 이는 여러 파일을 열 때 예상대로 작동하지 않습니다. 자세한 내용은 링크된 문서를 참조하세요.)


변수 개수의 파일을 동시에 열고 싶은 경우는 드물지만, Python 3.3부터는 contextlib.ExitStack을 사용할 수 있습니다.

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # "files"를 사용하여 작업 수행

보통은 파일을 순차적으로 처리하고, 특히 파일의 개수가 변수인 경우에는 모두 동시에 열지 않습니다.

for fname in filenames:
    with open(fname) as f:
        # "f"를 처리함
반응형

댓글