Removing Outdated Files (Python)

vegaseat

Let's imagine you are taking a lot of pictures and modify them with one of those fancy image editors. You burned the image files to a CD, and decided to purge some of the outdated files because your hard drive is getting full. This Python code allows you to set an expiration date. Any image in a given folder or subfolder that hasn't been modified since then is destined for the bit bucket. A slight modification allows you to set other criteria like last access date, or for instance removing text files (.txt). Just be careful when you test this out.

465 Views
About the Author

Scientist

# remove all jpeg image files of an expired modification date = mtime
# you could also use creation date (ctime) or last access date (atime)
# os.stat(filename) returns (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
# tested with Python24   vegaseat  6/7/2005

import os, glob, time

root = 'D:\\Vacation\\Poland2003\\' # one specific folder
#root = 'D:\\Vacation\\*'          # or all the subfolders too
# expiration date in the format YYYY-MM-DD
xDate = '2003-12-31'

print '-'*50
for folder in glob.glob(root):
    print folder
    # here .jpg image files, but could be .txt files or whatever
    for image in glob.glob(folder + '/*.jpg'):
        # retrieves the stats for the current jpeg image file
        # the tuple element at index 8 is the last-modified-date
        stats = os.stat(image)
        # put the two dates into matching format    
        lastmodDate = time.localtime(stats[8])
        expDate = time.strptime(xDate, '%Y-%m-%d')
        print image, time.strftime("%m/%d/%y", lastmodDate)
        # check if image-last-modified-date is outdated
        if  expDate > lastmodDate:
            try:
                print 'Removing', image, time.strftime("(older than %m/%d/%y)", expDate)
                #os.remove(image)  # commented out for testing
            except OSError:
                print 'Could not remove', image
        
Ene Uran 638 Posting Virtuoso

I took the liberty to update the code to work with Python27 and Python32 using the utility at
"C:/Python32/Tools/Scripts/2to3.py"
Here is the result:

# remove all jpeg image files of an expired modification date = mtime
# you could also use creation date (ctime) or last access date (atime)
# os.stat(filename) returns (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
# tested with Python24   vegaseat  6/7/2005
# updated for Python3x with 2to3.py utility program

import os, glob, time

root = 'D:\\Vacation\\Poland2003\\' # one specific folder
#root = 'D:\\Vacation\\*'          # or all the subfolders too
# expiration date in the format YYYY-MM-DD
xDate = '2003-12-31'

print('-'*50)
for folder in glob.glob(root):
    print(folder)
    # here .jpg image files, but could be .txt files or whatever
    for image in glob.glob(folder + '/*.jpg'):
        # retrieves the stats for the current jpeg image file
        # the tuple element at index 8 is the last-modified-date
        stats = os.stat(image)
        # put the two dates into matching format    
        lastmodDate = time.localtime(stats[8])
        expDate = time.strptime(xDate, '%Y-%m-%d')
        print(image, time.strftime("%m/%d/%y", lastmodDate))
        # check if image-last-modified-date is outdated
        if  expDate > lastmodDate:
            try:
                print('Removing', image, time.strftime("(older than %m/%d/%y)", expDate))
                #os.remove(image)  # commented out for testing
            except OSError:
                print('Could not remove', image)
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.