Edward Shaw
Edward Shaw

Reputation: 71

Delete files that are older than 7 days

I have seen some posts to delete all the files (not folders) in a specific folder, but I simply don't understand them.

I need to use a UNC path and delete all the files that are older than 7 days.

 Mypath = \\files\data\APIArchiveFolder\

Does someone have quick script that they can specifically input the path above into that would delete all files older than 7 days?

Upvotes: 6

Views: 32114

Answers (3)

ssalgado
ssalgado

Reputation: 43

Based in Vadim solution a more flexible approach Remember os.unlink(fileWithPath) removes everything in that folder older than X days, so be careful.

############ DELETE OLDER THAN X ############
current_time = time.time()
daysToDelete = 7
directory = '/absolute/path/to/folder/'

for dirpath,_,filenames in os.walk(directory):
    for f in filenames:
        fileWithPath = os.path.abspath(os.path.join(dirpath, f))
        creation_time = os.path.getctime(fileWithPath)
        print("file available:",fileWithPath)
        if (current_time - creation_time) // (24 * 3600) >= daysToDelete:
            os.unlink(fileWithPath)
            print('{} removed'.format(fileWithPath))
            print("\n")
        else:
            print('{} not removed'.format(fileWithPath))

Upvotes: 1

Vedang Mehta
Vedang Mehta

Reputation: 2254

This code removes files in the current working directory that were created >= 7 days ago. Run at your own risk.

import os
import time

current_time = time.time()

for f in os.listdir():
    creation_time = os.path.getctime(f)
    if (current_time - creation_time) // (24 * 3600) >= 7:
        os.unlink(f)
        print('{} removed'.format(f))

Upvotes: 21

Vadim Key
Vadim Key

Reputation: 1234

Another version:

import os
import time
import sys

if len(sys.argv) != 2:
    print "usage", sys.argv[0], " <dir>"
    sys.exit(1)

workdir = sys.argv[1]

now = time.time()
old = now - 7 * 24 * 60 * 60

for f in os.listdir(workdir):
    path = os.path.join(workdir, f)
    if os.path.isfile(path):
        stat = os.stat(path)
        if stat.st_ctime < old:
            print "removing: ", path
            # os.remove(path) # uncomment when you will sure :)

Upvotes: 1

Related Questions