Adventures in Machine Learning

Mastering File and Folder Management in Python

Moving and Managing Files and Folders in Python

As a developer or data analyst who frequently deals with files and folders, you may find it challenging to perform simple file operations such as moving files from one folder to another. Fortunately, Python provides a set of robust libraries and modules to make such tasks much easier.

In this article, we will explore how to move files and folders in Python using various techniques and libraries. We will begin by discussing the two primary keywords used when moving files: `shutil.move()` and `os.listdir()`.

Moving a Single File

The `shutil.move()` function provided by the `shutil` module is used to move a file from one directory to another. It requires two arguments: the source file’s absolute or relative path and the destination file’s absolute or relative path.

If the destination file already exists, `shutil.move()` will overwrite it.

For instance, consider the following example code:

“`

import shutil

shutil.move(‘/Users/michael/Downloads/sample.txt’, ‘/Users/michael/Desktop/’)

“`

The `shutil.move()` function moves the `sample.txt` file from the `Downloads` folder to the `Desktop` folder. If `sample.txt` already exists in the `Desktop` folder, the function will overwrite it.

Moving Multiple Files

In some cases, you may want to move multiple files from one folder to another. To accomplish this, you will need to use a loop to iterate through the files in the source directory.

You can use the `os.listdir()` function from the `os` module to return a list of all files and directories in a given directory. You can then use the `for` loop to iterate through each file and move it to the destination folder using the `shutil.move()` function.

Here is an example code snippet that moves multiple files from one folder to another:

“`

import os

import shutil

source_dir = ‘/Users/michael/Downloads/’

destination_dir = ‘/Users/michael/Desktop/’

for file_name in os.listdir(source_dir):

if os.path.isfile(os.path.join(source_dir, file_name)):

shutil.move(os.path.join(source_dir, file_name), destination_dir)

“`

This code moves all files from the `Downloads` folder to the `Desktop` folder. The `os.path.isfile()` function checks if the current item in the loop is a file.

If it is, the `shutil.move()` function moves it to the `Desktop` folder.

Moving a File and Renaming it

Sometimes you may need to move a file to a new location but rename it in the process to avoid overwriting an existing file. In this case, you can use the `os.path.splitext()` function to split the filename and extension, then add a prefix or suffix to the filename before moving it.

Here is an example code snippet that moves a file and renames it:

“`

import os

import shutil

source_file = ‘/Users/michael/Downloads/sample.txt’

destination_dir = ‘/Users/michael/Desktop/’

filename, file_extension = os.path.splitext(os.path.basename(source_file))

new_name = ‘prefix_’ + filename + file_extension

destination_file = os.path.join(destination_dir, new_name)

if not os.path.exists(destination_file):

shutil.move(source_file, destination_file)

“`

This code renames the `sample.txt` file to `prefix_sample.txt` and then moves it to the `Desktop` folder. The `os.path.basename()` function extracts the file name from the absolute path.

Moving All Files from a Directory

To move all files from a directory, you can use the `os.listdir()` function and loop through all the files in the directory. Here is an example code snippet that moves all files from a directory to another directory:

“`

import os

import shutil

source_dir = ‘/Users/michael/Downloads/’

destination_dir = ‘/Users/michael/Desktop/’

for file_name in os.listdir(source_dir):

if os.path.isfile(os.path.join(source_dir, file_name)):

shutil.move(os.path.join(source_dir, file_name), destination_dir)

“`

This code moves all files from the `Downloads` folder to the `Desktop` folder. The `os.path.isfile()` function checks if the current item in the loop is a file.

If it is, the `shutil.move()` function moves it to the `Desktop` folder.

Moving Multiple Specific Files

If you want to move only specific files from a directory, you can create a list of filenames and loop through it to move each file. Here is an example code snippet that moves all files with `.txt` and `.csv` extensions:

“`

import shutil

source_dir = ‘/Users/michael/Downloads/’

destination_dir = ‘/Users/michael/Desktop/’

file_list = [‘downloads.txt’, ‘sample.csv’, ‘newfile.txt’]

for file_name in file_list:

shutil.move(os.path.join(source_dir, file_name), destination_dir)

“`

This code moves only the files `downloads.txt`, `sample.csv`, and `newfile.txt` to the `Desktop` folder.

Moving Files Matching a Pattern (Wildcard)

If you want to move files based on particular naming patterns, you can use the `glob.glob()` function to return a list of files that match the specified pattern. Here is an example code snippet that moves all files with `.txt` extensions:

“`

import glob

import shutil

source_dir = ‘/Users/michael/Downloads/’

destination_dir = ‘/Users/michael/Desktop/’

for file_path in glob.glob(os.path.join(source_dir, ‘*.txt’)):

shutil.move(file_path, destination_dir)

“`

This code moves all files with `.txt` extension from the `Downloads` folder to the `Desktop` folder.

The shutil Module

The `shutil` module provides several useful functions for copying and moving files and folders. In addition to the `shutil.move()` function described above, the module provides a variety of functions with various features:

– The `shutil.copy2()` function copies a file from one location to another, preserving all its metadata and permissions.

By default, the function overwrites existing files with the same name in the destination folder. – The `shutil.copytree()` function copies an entire directory tree, including all subdirectories and files.

The function supports many options, such as creating a new directory or overwriting existing files/directories. – The `shutil.rmtree()` function removes an entire directory tree, including all subdirectories and files.

Wrapping Up

In conclusion, Python provides several libraries and modules that simplify file and folder management tasks. The `shutil` module contains powerful functions for copying and moving files and folders, and the `os` module offers useful functions for searching directories and working with files.

With these techniques, you can easily move files, rename them, and copy whole directories in a matter of minutes. In conclusion, managing files and folders in Python can be a simple and straightforward process with the right tools and techniques.

The importance of being able to handle files and directories cannot be overstated, as most data analysis and software development tasks involve dealing with them. To this end, Python offers a range of functions and modules such as shutil and os that make it easier to move, copy, and manage these objects programmatically.

As we have seen in this article, with the correct understanding of the available commands like shutil.move(), os.listdir(), and glob.glob() one can effectively move files irrespective of the complexity of the task. These tools, along with others from the modules we’ve mentioned, should prove invaluable in any Python developer’s toolkit.

Popular Posts