Python | shutil.which() method (original) (raw)

Last Updated : 12 Jul, 2025

**Shutil module in Python provides many functions of high-level operations on files and collections of files. It comes under Python’s standard utility modules. This module helps to automate the process of copying and removal of files and directories.

shutil.which() method tells the path to an executable application that would be run if the given cmd was called. This method can be used to find a file on a computer that is present on the PATH.

shutil.which() Method Syntax in Python

**Syntax: shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None)

**Parameters:

**Return Value: This method returns the path to an executable application

Python shutil.which() method Example

Below are some examples of shutil.which() function of Shutil module by which we can check if a file is executable using os.X_OK and in Python:

Get **Python Location Using shutil.which() Method

In this example, the code employs shutil.which() to locate the full path of the 'python' executable in the system. The result is printed, showing the executable's path or None if not found.

Python3 `

import os import shutil

cmd

cmd = 'python'

Using shutil.which() method

locate = shutil.which(cmd)

print(locate)

`

**Output:

/usr/bin/python

Check Path is Executable Using shutil.which()

In this example, the function **is_executable()**takes a file path as an argument, uses shutil.which() to get the executable path, and then checks if the path is not None and is executable using os.access() with the os.X_OK flag. If the file is executable, the function returns True; otherwise, it returns False.

Python3 `

import os import shutil

def is_executable(file_path): # Using shutil.which() to get the executable path executable_path = shutil.which(file_path)

# Check if the executable path is not None and is executable
if executable_path and os.access(executable_path, os.X_OK):
    return True
else:
    return False

Example usage

file_to_check = "python" if is_executable(file_to_check): print(f"{file_to_check} is executable.") else: print(f"{file_to_check} is not executable or not found in the PATH.")

`

**Output:

python is executable.