Bird
Raised Fist0
Pythonprogramming~20 mins

Working with operating system paths 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
🎖️
Path Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of joining paths?
Consider the following Python code using os.path.join. What will be printed?
Python
import os
path = os.path.join('folder', 'subfolder', 'file.txt')
print(path)
A"folder.subfolder.file.txt"
B"folder/subfolder/file.txt"
C"folder-subfolder-file.txt"
D"folder\\subfolder\\file.txt"
Attempts:
2 left
💡 Hint
Think about how paths are joined on Unix-like systems.
Predict Output
intermediate
2:00remaining
What does os.path.basename return?
What will the following code print?
Python
import os
filename = os.path.basename('/home/user/docs/report.pdf')
print(filename)
A"report.pdf"
B"/home/user/docs/report.pdf"
C"/home/user/docs"
D"docs/report.pdf"
Attempts:
2 left
💡 Hint
Think about what the basename function extracts from a path.
Predict Output
advanced
2:00remaining
What is the output of normpath with redundant separators?
What will this code print?
Python
import os
path = os.path.normpath('folder//subfolder/../file.txt')
print(path)
A"folder//file.txt"
B"folder/../file.txt"
C"folder/file.txt"
D"folder/subfolder/file.txt"
Attempts:
2 left
💡 Hint
Think about how normpath simplifies paths by removing redundant parts.
Predict Output
advanced
2:00remaining
What error does this code raise?
What error will this code raise?
Python
import os
path = os.path.join('folder', None, 'file.txt')
print(path)
ATypeError
BValueError
CAttributeError
DNo error, prints 'folder/None/file.txt'
Attempts:
2 left
💡 Hint
Consider what happens when you pass None to os.path.join.
🧠 Conceptual
expert
2:00remaining
How many items are in the list after splitting a path?
Given this code, how many items will the list parts contain?
Python
import os
path = '/usr/local/bin/python3'
parts = path.split(os.sep)
print(len(parts))
A4
B3
C6
D5
Attempts:
2 left
💡 Hint
Remember that splitting by '/' on an absolute path creates an empty string at the start.

Practice

(1/5)
1. Which function is used to safely combine folder and file names into a full path in Python?
easy
A. os.path.join()
B. os.path.exists()
C. os.path.basename()
D. os.path.dirname()

Solution

  1. Step 1: Understand purpose of os.path.join()

    It combines parts of a path into one full path, handling separators correctly.
  2. Step 2: Compare with other functions

    os.path.exists() checks if a path exists, basename() gets file name, dirname() gets folder name.
  3. Final Answer:

    os.path.join() -> Option A
  4. Quick Check:

    Combine paths = os.path.join() [OK]
Hint: Use os.path.join() to build paths safely [OK]
Common Mistakes:
  • Confusing join() with exists()
  • Using basename() to join paths
  • Using dirname() to combine paths
2. Which of the following is the correct syntax to get the folder name from a path stored in variable path?
easy
A. os.path.basename(path)
B. os.path.dirname(path)
C. os.path.join(path)
D. os.path.exists(path)

Solution

  1. Step 1: Identify function to get folder name

    os.path.dirname(path) returns the directory part of the path.
  2. Step 2: Check other options

    basename() returns file name, join() combines paths, exists() checks path existence.
  3. Final Answer:

    os.path.dirname(path) -> Option B
  4. Quick Check:

    Folder name = os.path.dirname(path) [OK]
Hint: Use os.path.dirname() to get folder name from path [OK]
Common Mistakes:
  • Using basename() to get folder
  • Calling join() with one argument
  • Confusing exists() with dirname()
3. What will be the output of this code?
import os
path = os.path.join('folder', 'subfolder', 'file.txt')
print(os.path.basename(path))
medium
A. folder
B. subfolder
C. file.txt
D. folder/subfolder/file.txt

Solution

  1. Step 1: Understand os.path.join()

    It creates 'folder/subfolder/file.txt' (with correct separator).
  2. Step 2: Understand os.path.basename()

    It returns the last part of the path, which is the file name 'file.txt'.
  3. Final Answer:

    file.txt -> Option C
  4. Quick Check:

    basename() returns file name [OK]
Hint: basename() returns last part (file) of path [OK]
Common Mistakes:
  • Expecting folder name instead of file
  • Confusing join() output with basename()
  • Printing full path instead of basename
4. What is wrong with this code snippet?
import os
path = os.path.join('folder', 'file.txt')
if os.path.exists:
    print('Path exists')
medium
A. os.path.exists is used without parentheses
B. os.path.join() cannot join two parts
C. print statement is missing parentheses
D. Variable path is not defined

Solution

  1. Step 1: Check usage of os.path.exists

    It is a function and must be called with parentheses and argument: os.path.exists(path).
  2. Step 2: Verify other parts

    join() usage is correct, print() has parentheses, path is defined.
  3. Final Answer:

    os.path.exists is used without parentheses -> Option A
  4. Quick Check:

    Call exists() with parentheses [OK]
Hint: Call os.path.exists() with path argument [OK]
Common Mistakes:
  • Forgetting () after exists
  • Passing no argument to exists()
  • Misusing join() function
5. You want to check if a file named data.csv exists inside a folder reports located in the user's home directory. Which code correctly builds the path and checks existence?
hard
A. os.path.exists(os.path.join(os.getcwd(), 'reports', 'data.csv'))
B. os.path.exists(os.path.join('reports', 'data.csv'))
C. os.path.exists('~/reports/data.csv')
D. os.path.exists(os.path.join(os.path.expanduser('~'), 'reports', 'data.csv'))

Solution

  1. Step 1: Get user's home directory

    Use os.path.expanduser('~') to get the home folder path.
  2. Step 2: Join home, reports, and file name

    Use os.path.join() to combine home path, 'reports', and 'data.csv'.
  3. Step 3: Check if the full path exists

    Pass the full joined path to os.path.exists() to check existence.
  4. Final Answer:

    os.path.exists(os.path.join(os.path.expanduser('~'), 'reports', 'data.csv')) -> Option D
  5. Quick Check:

    Expand user + join + exists = os.path.exists(os.path.join(os.path.expanduser('~'), 'reports', 'data.csv')) [OK]
Hint: Use expanduser('~') to get home folder before joining [OK]
Common Mistakes:
  • Using relative path without home folder
  • Using literal '~/...' without expanduser
  • Using current working directory instead of home