Bird
Raised Fist0
Pythonprogramming~20 mins

Handling multiple resources in Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Master of Handling Multiple Resources
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of nested with statements
What is the output of this Python code that opens two files using nested with statements?
Python
with open('file1.txt', 'w') as f1:
    f1.write('Hello')
with open('file2.txt', 'w') as f2:
    f2.write('World')

with open('file1.txt', 'r') as f1:
    with open('file2.txt', 'r') as f2:
        print(f1.read() + ' ' + f2.read())
ASyntaxError
BHelloWorld
CHello World
DWorld Hello
Attempts:
2 left
💡 Hint
Remember that the files are opened and read in the order of the nested with statements.
Predict Output
intermediate
2:00remaining
Using multiple context managers in one with statement
What will this code print when opening two files in a single with statement?
Python
with open('file1.txt', 'w') as f1, open('file2.txt', 'w') as f2:
    f1.write('Data1')
    f2.write('Data2')

with open('file1.txt', 'r') as f1, open('file2.txt', 'r') as f2:
    print(f1.read() + '-' + f2.read())
ATypeError
BData1-Data2
CData1Data2
DData2-Data1
Attempts:
2 left
💡 Hint
Multiple context managers can be opened in one with statement separated by commas.
🔧 Debug
advanced
2:00remaining
Identify the error in resource handling
What error does this code raise when trying to open two files using nested with statements incorrectly?
Python
with open('file1.txt', 'r') as f1:
    with open('file2.txt', 'r') as f2:
        print(f1.read() + f2.read())
ATypeError
BFileNotFoundError
CIndentationError
DSyntaxError
Attempts:
2 left
💡 Hint
Check the syntax of the with statement lines carefully.
Predict Output
advanced
2:00remaining
Effect of exception inside multiple with statement
What will be printed by this code that opens two files and raises an exception inside the with block?
Python
try:
    with open('file1.txt', 'w') as f1, open('file2.txt', 'w') as f2:
        f1.write('Test')
        raise ValueError('Oops')
        f2.write('Fail')
except ValueError as e:
    print('Caught:', e)

with open('file1.txt', 'r') as f1:
    print(f1.read())
A
Caught: Oops
Test
B
Caught: Oops
C
Test
Caught: Oops
DTest
Attempts:
2 left
💡 Hint
The exception stops execution inside the with block but the file is still written and closed properly.
🧠 Conceptual
expert
2:00remaining
Order of resource release in multiple context managers
When using multiple context managers in one with statement like with A() as a, B() as b:, in which order are the resources released (their __exit__ methods called)?
AFirst B's __exit__ then A's __exit__
BFirst A's __exit__ then B's __exit__
CBoth __exit__ methods are called simultaneously
DOrder is undefined and depends on Python version
Attempts:
2 left
💡 Hint
Think about how nested with statements work and the stack of context managers.

Practice

(1/5)
1. What is the main benefit of using a single with statement to handle multiple resources in Python?
easy
A. It automatically deletes the files after use.
B. It makes the program run faster.
C. It allows resources to stay open indefinitely.
D. It ensures all resources are properly closed even if an error occurs.

Solution

  1. Step 1: Understand resource management with with

    The with statement automatically closes resources like files when done, even if errors happen.
  2. Step 2: Benefits of handling multiple resources together

    Using one with for many resources ensures all close properly, avoiding resource leaks.
  3. Final Answer:

    It ensures all resources are properly closed even if an error occurs. -> Option D
  4. Quick Check:

    Proper resource closing = A [OK]
Hint: One with closes all resources safely [OK]
Common Mistakes:
  • Thinking it speeds up the program
  • Believing resources stay open longer
  • Assuming files get deleted automatically
2. Which of the following is the correct syntax to open two files together using a single with statement?
easy
A. with open('file1.txt') and open('file2.txt') as f1, f2:
B. with open('file1.txt') as f1; open('file2.txt') as f2:
C. with open('file1.txt') as f1, open('file2.txt') as f2:
D. with open('file1.txt'), open('file2.txt') as f1, f2:

Solution

  1. Step 1: Recall correct with syntax for multiple resources

    Multiple resources are separated by commas inside one with statement, each with its own as clause.
  2. 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.
  3. Final Answer:

    with open('file1.txt') as f1, open('file2.txt') as f2: -> Option C
  4. Quick Check:

    Comma separates resources in with [OK]
Hint: Use commas, not semicolons, to separate resources in with [OK]
Common Mistakes:
  • Using semicolons instead of commas
  • Trying to combine as for both files
  • Using 'and' instead of commas
3. What will be the output of this code snippet?
with open('file1.txt', 'w') as f1, open('file2.txt', 'w') as f2:
    f1.write('Hello')
    f2.write('World')
print(f1.closed, f2.closed)
medium
A. True True
B. False False
C. False True
D. True False

Solution

  1. Step 1: Understand with block behavior

    Files opened inside with are automatically closed when the block ends.
  2. Step 2: Check print(f1.closed, f2.closed) after block

    Since the print is outside the with, both files are closed, so both f1.closed and f2.closed are True.
  3. Final Answer:

    True True -> Option A
  4. Quick Check:

    Files closed after with block = True True [OK]
Hint: Files close automatically after with ends [OK]
Common Mistakes:
  • Thinking files stay open after with
  • Confusing closed attribute values
  • Assuming only one file closes
4. Identify the error in this code:
with open('file1.txt') as f1, open('file2.txt') as f2
    data1 = f1.read()
    data2 = f2.read()
medium
A. Missing colon at the end of the with statement.
B. Cannot open two files in one with statement.
C. Variables data1 and data2 are not defined.
D. Files must be opened in write mode to read.

Solution

  1. Step 1: Check with statement syntax

    The with statement must end with a colon (:). This code misses it.
  2. Step 2: Validate other parts

    Opening two files in one with is allowed, variables are defined by assignment, and reading files in default mode is valid.
  3. Final Answer:

    Missing colon at the end of the with statement. -> Option A
  4. Quick Check:

    Colon required after with header [OK]
Hint: Always end with lines with a colon [:] [OK]
Common Mistakes:
  • Forgetting the colon at the end
  • Thinking multiple files can't be opened together
  • Confusing read/write modes
5. You want to copy contents from 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?
hard
A. with open('source.txt') as src and open('dest.txt', 'w') as dst: dst.write(src.read())
B. with open('source.txt') as src, open('dest.txt', 'w') as dst: dst.write(src.read())
C. with open('source.txt') as src: with open('dest.txt', 'w') as dst: dst.write(src.read())
D. src = open('source.txt') dst = open('dest.txt', 'w') dst.write(src.read()) src.close() dst.close()

Solution

  1. Step 1: Understand safe resource handling

    Using a single with statement with multiple resources ensures all files close properly even if errors happen.
  2. Step 2: Evaluate options

    with open('source.txt') as src, open('dest.txt', 'w') as dst: dst.write(src.read()) uses one with with 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 nested with (correct but not single with). with open('source.txt') as src and open('dest.txt', 'w') as dst: dst.write(src.read()) uses invalid syntax with 'and'.
  3. Final Answer:

    with open('source.txt') as src, open('dest.txt', 'w') as dst: dst.write(src.read()) -> Option B
  4. Quick Check:

    Single with with commas = D [OK]
Hint: Use commas inside one with to open multiple files [OK]
Common Mistakes:
  • Using nested with instead of single
  • Forgetting to close files manually
  • Using invalid syntax like 'and' in with