Python os
module provides some operating system functions for file & directory processing. Below you can find some examples of these functions.
Creating a Directory
To create a directory you can use mkdir()
function from os module.
When dealing with paths, you can use raw strings. A Raw string
is a string with an ‘r’ (or ‘R’) prefix. Normally, you need to use the backslash escape character (\\) to create a path string.
In raw strings, backslash character is treated as a normal character (not an escape character). Thus, you can create path strings without using escape characters in raw strings.
import os
os.mkdir("D:\\test") # Backslash escape character
# is used (\\)
os.mkdir(r"D:\test\subfolder") # Raw string is used (r prefix
# before string)
Renaming a Directory
To rename a file or directory, you can use rename()
function.
import os
os.rename(r"D:\test", r"D:\test-renamed")
Listing Files
To list files in a directory, listdir()
function is used. This function returns the names of files and folders in the given directory.
Since Python 3.5, you can use scandir() function. scandir()
function not only returns file/folder names, but it also returns file attribute information and has better performance than listdir()
function.
In the example below, *.txt files under D:\test directory are listed using both listdir()
and scandir()
functions.
root_folder = r"D:\test"
# listdir() example
for filename in os.listdir(root_folder):
if filename.endswith(".txt"):
print(os.path.join(root_folder, filename))
# scandir() example
for entry in os.scandir(root_folder):
if entry.path.endswith(".txt") and entry.is_file():
print(entry.path)
Listing Files Recursively
Consider we have the following file structure under D:\test directory.
D: └───test │ file1.txt │ file2.txt │ image1.jpg │ image2.png │ └───subfolder1 │ file3.txt │ file4.txt │ └───subfolder2 file5.txt
To list files in a directory and all subdirectories recursively, you can use iglob()
function from glob
module.
Usage of iglob()
function is shown in the following code which lists *.txt
files recursively.
Note that double asterisk is used in the search path (D:\test\**
\*.txt). A double asterisk (**
) indicates that files should be searched in the current directory and all subdirectories under this directory.
import glob
for filename in glob.iglob(r'D:\test\**\*.txt', recursive=True):
print(filename)
# D:\test\file1.txt
# D:\test\file2.txt
# D:\test\subfolder1\file3.txt
# D:\test\subfolder1\file4.txt
# D:\test\subfolder1\subfolder2\file5.txt
Deleting a Directory
You can use rmtree()
function from shutil
module to delete a directory and all files/folders under this directory.
import shutil
shutil.rmtree(r"D:\test")
# Caution: rmtree() function will delete all files and folders
# under specified directory
Renaming a File
rename()
function is used to rename files and folders in Python.
import os
os.rename(r"D:\test\file1.txt", r"D:\test\file1_renamed.txt")
Copying a File
copy2()
function from shutil
module is used to copy a file. This function not only copies the file contents but also the metadata of the file (like file modification time).
import shutil
shutil.copy2(r"D:\test\file1.txt", r"D:\test\file1_copy.txt")
Deleting a File
remove()
function can be used to delete a file.
import os
os.remove(r"D:\test\file1_copy.txt")