Removing Outdated Files (Python)

vegaseat 0 Tallied Votes 531 Views Share

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.

# 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 meeting, networking, learning, and sharing knowledge.