Skip to main content

How to Handle File Paths from User Input in Python

Interactive applications often require users to provide file paths. Robustly handling file path input involves validation and error management.

This guide demonstrates how to take file paths from user input in Python, verify their existence, and perform operations on them safely.

Getting a File Path from User Input

Use the input() function to prompt the user to enter a file path:

file_path = input('Enter a file path: ')
print(file_path)
  • The input() function reads a line from standard input, converts it to a string and returns the result. The returned string is stored in the file_path variable.

Validating the File Path

Before performing operations, use os.path.exists() to verify the file's existence:

import os

file_path = input('Enter a file path: ')

if os.path.exists(file_path):
print('The file exists')
# Proceed with file operations
else:
print('The specified file does NOT exist')
# Handle the case where the file doesn't exist
  • The os.path.exists() function checks if a file or directory at the given path actually exists. If it does, True is returned, otherwise it returns False.

Opening and Processing the File (if it exists)

If the file exists, open and process it with a with open() statement ensuring the file will always be properly closed, even in the case of exceptions being raised.

import os

file_path = input('Enter a file path: ')
if os.path.exists(file_path):
print('The file exists')
with open(file_path, 'r', encoding='utf-8-sig') as f:
lines = f.readlines()
print(lines) # Example: Print the file contents
else:
print('The specified file does NOT exist.')
  • The with open() statement opens the file in read mode ('r') with UTF-8 encoding (including BOM handling).
  • The readlines() method then reads all the lines from the file into a list and prints them. You can use other operations with the contents of the file in the with statement.

Handling Non-Existent Files

When a file doesn't exist, you might display a message, raise an exception, or try alternative actions.

Raising an Error

You can use raise keyword to raise a FileNotFoundError exception if you need the program to fail immediately after the user has entered an invalid file path:

import os

file_path = input('Enter a file path: ')
if os.path.exists(file_path):
print('The file exists')
# Proceed with file operations here.
else:
raise FileNotFoundError('No such file or directory.')