Bird
Raised Fist0
Pythonprogramming~5 mins

Working with operating system paths in Python

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
Introduction

We use operating system paths to find and organize files and folders on a computer. Working with paths helps your program find files no matter where it runs.

When you want to open a file in your program by giving its location.
When you need to join folder names and file names to make a full path.
When you want to check if a file or folder exists before using it.
When you want to get the folder part or the file part from a full path.
When you want your program to work on different computers with different path styles.
Syntax
Python
import os

# Join parts of a path
full_path = os.path.join('folder', 'subfolder', 'file.txt')

# Get folder name from path
folder = os.path.dirname(full_path)

# Get file name from path
file = os.path.basename(full_path)

# Check if path exists
exists = os.path.exists(full_path)

Use os.path.join() to combine parts safely, so it works on Windows and Mac/Linux.

os.path has many useful functions to work with paths without errors.

Examples
This joins folder names and a file name into one path.
Python
import os
path = os.path.join('home', 'user', 'notes.txt')
print(path)
This gets the folder part from a full path.
Python
import os
path = '/home/user/notes.txt'
folder = os.path.dirname(path)
print(folder)
This gets the file name from a full path.
Python
import os
path = '/home/user/notes.txt'
file = os.path.basename(path)
print(file)
This checks if the file or folder exists at the given path.
Python
import os
path = 'somefile.txt'
print(os.path.exists(path))
Sample Program

This program shows how to join parts into a path, get folder and file names, and check if the path exists.

Python
import os

folder = 'documents'
subfolder = 'projects'
filename = 'report.txt'

# Create full path
full_path = os.path.join(folder, subfolder, filename)
print(f'Full path: {full_path}')

# Get folder and file parts
folder_part = os.path.dirname(full_path)
file_part = os.path.basename(full_path)
print(f'Folder part: {folder_part}')
print(f'File part: {file_part}')

# Check if path exists
exists = os.path.exists(full_path)
print(f'Does the path exist? {exists}')
OutputSuccess
Important Notes

Paths look different on Windows (using backslashes) and Mac/Linux (using slashes), but os.path.join() handles this for you.

Always use os.path functions instead of string operations to avoid mistakes.

Summary

Use os.path.join() to build paths safely.

Use os.path.dirname() and os.path.basename() to get folder and file names.

Use os.path.exists() to check if a path is real on the computer.

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