File Organizing with Python: Rename, Move, Copy & Delete Files and Folders

Patrick Loeber

Python is the perfect tool to automate file organization. In this article you will learn how to use Python to rename, move, copy, and delete files and folders.

I also included an example script that cleans up your Desktop.

How to navigate and change the directory in Python

You can use os.getcwd() to get the current working directory, and os.chdir() to change into another directory:

import os print(os.getcwd()) os.chdir("/Users/patrick/Desktop/video-files") print(os.getcwd()) # /Users/patrick/Desktop/video-files

How to rename files in Python

You can use os.rename() or pathlib.Path.rename().

This example changes filenames from

to -->

import os for file in os.listdir(): # split into base name and extension name, ext = os.path.splitext(file) splitted = name.split("-") splitted = [s.strip() for s in splitted] new_name = f"{splitted[3].zfill(2)}-{splitted[1]}-{splitted[2]}-{splitted[0]}{ext}" os.rename(file, new_name)

Or as modern alternative you can usepathlib.Path:

import os from pathlib import Path for file in os.listdir(): f = Path(file) # split into base name and extension name, ext = f.stem, f.suffix splitted = name.split("-") splitted = [s.strip() for s in splitted] new_name = f"{splitted[3].zfill(2)}-{splitted[1]}-{splitted[2]}-{splitted[0]}{ext}" f.rename(new_name)

How to create directories:

You can use pathlib.Path.mkdir() or os.mkdir():

from pathlib import Path Path("data").mkdir(exist_ok=True) # or import os if not os.path.exists("data"): os.mkdir("data")

How to move files in Python

This can be done with the shutil module and shutil.move():

import shutil shutil.move('source', 'destination') # works for file and folder

How to copy files in Python

This can be done with shutil.copy() or shutil.copy2(). The latter also copies all metadata:

import shutil shutil.copy('source', 'destination') # new metatags shutil.copy2('source', 'destination') # copies metadata, too

How to delete files and folders in Python

For files we can use os.remove() and for empty folders os.rmdir(). To recursively delete non-empty folders we can use shutil.rmtree():

os.remove("filename") # error if not found os.rmdir("folder") # error if not empty, or not found shutil.rmtree("folder") # works for non empty directories

Organize and clean up your Desktop with Python

This example script can be used to move images, videos, screenshots, and audio files into corresponding folders.

A great way to run this script automatically is by using a cron job. In this article you can learn how to schedule Python scripts as cron jobs with crontab (Mac/Linux).

import os import shutil audio = (".3ga", ".aac", ".ac3", ".aif", ".aiff", ".alac", ".amr", ".ape", ".au", ".dss", ".flac", ".flv", ".m4a", ".m4b", ".m4p", ".mp3", ".mpga", ".ogg", ".oga", ".mogg", ".opus", ".qcp", ".tta", ".voc", ".wav", ".wma", ".wv") video = (".webm", ".MTS", ".M2TS", ".TS", ".mov", ".mp4", ".m4p", ".m4v", ".mxf") img = (".jpg", ".jpeg", ".jfif", ".pjpeg", ".pjp", ".png", ".gif", ".webp", ".svg", ".apng", ".avif") def is_audio(file): return os.path.splitext(file)[1] in audio def is_video(file): return os.path.splitext(file)[1] in video def is_image(file): return os.path.splitext(file)[1] in img def is_screenshot(file): name, ext = os.path.splitext(file) return (ext in img) and "screenshot" in name.lower() os.chdir("/Users/patrick/Desktop") for file in os.listdir(): if is_audio(file): shutil.move(file, "Users/patrick/Documents/audio") elif is_video(file): shutil.move(file, "Users/patrick/Documents/video") elif is_image(file): if is_screenshot(file): shutil.move(file, "Users/patrick/Documents/screenshots") else: shutil.move(file, "Users/patrick/Documents/images") else: shutil.move(file, "Users/patrick/Documents")

FREE VS Code / PyCharm Extensions I Use

✅ Write cleaner code with Sourcery, instant refactoring suggestions: Link *

* This is an affiliate link. By clicking on it you will not have any additional costs, instead you will support me and my project. Thank you! 🙏

Check out my Courses