How can I open multiple files using "with open" in Python? How can I open multiple files using "with open" in Python? python python

How can I open multiple files using "with open" in Python?


As of Python 2.7 (or 3.1 respectively) you can write

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

In earlier versions of Python, you can sometimes use contextlib.nested() to nest context managers. This won't work as expected for opening multiples files, though -- see the linked documentation for details.


In the rare case that you want to open a variable number of files all at the same time, you can use contextlib.ExitStack, starting from Python version 3.3:

with ExitStack() as stack:    files = [stack.enter_context(open(fname)) for fname in filenames]    # Do something with "files"

Most of the time you have a variable set of files, you likely want to open them one after the other, though.


Just replace and with , and you're done:

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


For opening many files at once or for long file paths, it may be useful to break things up over multiple lines. From the Python Style Guide as suggested by @Sven Marnach in comments to another answer:

with open('/path/to/InFile.ext', 'r') as file_1, \     open('/path/to/OutFile.ext', 'w') as file_2:    file_2.write(file_1.read())