Sometimes, you need to work with more than one file or resource at the same time. Handling multiple resources safely helps avoid mistakes and keeps your program clean.
Handling multiple resources in Python
with open('file1.txt') as file1, open('file2.txt') as file2: # work with file1 and file2 here
You can open multiple resources in one with statement separated by commas.
All resources will be closed automatically when the block ends.
input.txt and writes it in uppercase to output.txt.with open('input.txt') as infile, open('output.txt', 'w') as outfile: data = infile.read() outfile.write(data.upper())
with open('file1.txt') as f1, open('file2.txt') as f2: lines1 = f1.readlines() lines2 = f2.readlines()
This program first creates two files with numbers. Then it opens both files at the same time, reads the numbers, and prints their sums.
with open('numbers1.txt', 'w') as f1, open('numbers2.txt', 'w') as f2: f1.write('1\n2\n3\n') f2.write('4\n5\n6\n') with open('numbers1.txt') as file1, open('numbers2.txt') as file2: nums1 = [int(line.strip()) for line in file1] nums2 = [int(line.strip()) for line in file2] print('Sum of numbers1:', sum(nums1)) print('Sum of numbers2:', sum(nums2))
Using with for multiple resources keeps your code clean and safe.
If one resource fails to open, none will stay open accidentally.
You can use this pattern for files, network connections, or any resource that supports context management.
Use a single with statement to handle multiple resources together.
This ensures all resources close properly even if errors happen.
It makes your code easier to read and safer.
Practice
with statement to handle multiple resources in Python?Solution
Step 1: Understand resource management with
Thewithwithstatement automatically closes resources like files when done, even if errors happen.Step 2: Benefits of handling multiple resources together
Using onewithfor many resources ensures all close properly, avoiding resource leaks.Final Answer:
It ensures all resources are properly closed even if an error occurs. -> Option DQuick Check:
Proper resource closing = A [OK]
with closes all resources safely [OK]- Thinking it speeds up the program
- Believing resources stay open longer
- Assuming files get deleted automatically
with statement?Solution
Step 1: Recall correct
Multiple resources are separated by commas inside onewithsyntax for multiple resourceswithstatement, each with its ownasclause.Step 2: Check each option
with open('file1.txt') as f1, open('file2.txt') as f2: uses commas correctly and assigns each file to a separate variable. Others use wrong separators or combine incorrectly.Final Answer:
with open('file1.txt') as f1, open('file2.txt') as f2: -> Option CQuick Check:
Comma separates resources inwith[OK]
with [OK]- Using semicolons instead of commas
- Trying to combine
asfor both files - Using 'and' instead of commas
with open('file1.txt', 'w') as f1, open('file2.txt', 'w') as f2:
f1.write('Hello')
f2.write('World')
print(f1.closed, f2.closed)Solution
Step 1: Understand
Files opened insidewithblock behaviorwithare automatically closed when the block ends.Step 2: Check
Since the print is outside theprint(f1.closed, f2.closed)after blockwith, both files are closed, so bothf1.closedandf2.closedare True.Final Answer:
True True -> Option AQuick Check:
Files closed afterwithblock = True True [OK]
with ends [OK]- Thinking files stay open after
with - Confusing
closedattribute values - Assuming only one file closes
with open('file1.txt') as f1, open('file2.txt') as f2
data1 = f1.read()
data2 = f2.read()Solution
Step 1: Check
Thewithstatement syntaxwithstatement must end with a colon (:). This code misses it.Step 2: Validate other parts
Opening two files in onewithis allowed, variables are defined by assignment, and reading files in default mode is valid.Final Answer:
Missing colon at the end of thewithstatement. -> Option AQuick Check:
Colon required afterwithheader [OK]
with lines with a colon [:] [OK]- Forgetting the colon at the end
- Thinking multiple files can't be opened together
- Confusing read/write modes
source.txt to dest.txt safely, ensuring both files close properly even if an error occurs. Which code correctly uses a single with statement to handle both files?Solution
Step 1: Understand safe resource handling
Using a singlewithstatement with multiple resources ensures all files close properly even if errors happen.Step 2: Evaluate options
with open('source.txt') as src, open('dest.txt', 'w') as dst: dst.write(src.read()) uses onewithwith two files separated by a comma, correctly handling both. src = open('source.txt') dst = open('dest.txt', 'w') dst.write(src.read()) src.close() dst.close() manually closes files (less safe). with open('source.txt') as src: with open('dest.txt', 'w') as dst: dst.write(src.read()) uses nestedwith(correct but not singlewith). with open('source.txt') as src and open('dest.txt', 'w') as dst: dst.write(src.read()) uses invalid syntax with 'and'.Final Answer:
with open('source.txt') as src, open('dest.txt', 'w') as dst: dst.write(src.read()) -> Option BQuick Check:
Singlewithwith commas = D [OK]
with to open multiple files [OK]- Using nested
withinstead of single - Forgetting to close files manually
- Using invalid syntax like 'and' in
with
Ready to prove it?
Pass the test and this pattern moves unknown
