Python : Search for a word in all files and subfolders with Python

python @ Freshers.in

In this article, we’re going to learn how to search for a particular word in all the files contained within a directory and its subdirectories. We’ll use Python for this task, taking advantage of its robust file and directory handling capabilities. This can be a handy tool in many scenarios, such as searching for specific references in a codebase, looking for specific phrases in a collection of text files, and so on.

Here is the full code, followed by a detailed explanation:

import os

def search_files(directory, word):
    # Loop over all the directories, subdirectories, and files
    for foldername, subfolders, files in os.walk(directory):
        for file in files:
            try:
                # Open each file
                with open(os.path.join(foldername, file), 'r') as f:
                    # Read the file
                    content = f.read()
                    # Check if the word is in the content
                    if word in content:
                        # Print the file path
                        print(os.path.join(foldername, file))
            except Exception as e:
                print(f"Error opening file {os.path.join(foldername, file)}: {e}")

directory = "/freshers/codebkt/pymodules/"  # replace with your directory
word = "s3://freshers-in"  # replace with the word to search
search_files(directory, word)

Importing Required Modules

The first step is to import the necessary module:

import os

We use the os module, which provides functions to interact with the operating system, including file and directory handling functions.

Defining the Search Function

Next, we define a function called search_files that takes two arguments: the directory to search and the word to look for.

def search_files(directory, word):

Walking the Directory Tree

We use os.walk(directory) to iterate over each directory, subdirectory, and file in the specified directory.

for foldername, subfolders, files in os.walk(directory):
    for file in files:

Opening and Reading Files

Then, for each file, we open it and read its content. We use a try/except block to handle potential exceptions, such as trying to open a binary file or a file for which we don’t have reading permissions.

try:
    with open(os.path.join(foldername, file), 'r') as f:
        content = f.read()

Searching for the Word

We then check whether the word we’re searching for is in the content of the file. If it is, we print the file’s path using os.path.join(foldername, file).

if word in content:
    print(os.path.join(foldername, file))

Handling Exceptions

If an exception occurs when trying to open or read a file, we print an error message:

except Exception as e:
    print(f"Error opening file {os.path.join(foldername, file)}: {e}")

Running the Search

Finally, to run the search, replace “/freshers/codebkt/pymodules/” and “your_word” with your actual directory and the word you’re looking for, respectively.

directory = "/freshers/codebkt/pymodules/"
word = "s3://freshers-in"
search_files(directory, word)

This will print the paths of all the files that contain the specified word.

Refer more on python here :
Author: user

Leave a Reply