删除超过 7 天的文件
Posted
技术标签:
【中文标题】删除超过 7 天的文件【英文标题】:Delete files that are older than 7 days 【发布时间】:2016-09-20 19:39:39 【问题描述】:我看过一些帖子删除特定文件夹中的所有文件(不是文件夹),但我根本不明白。
我需要使用 UNC 路径并删除所有超过 7 天的文件。
Mypath = \\files\data\APIArchiveFolder\
是否有人有快速脚本,他们可以专门输入上面的路径来删除所有超过 7 天的文件?
【问题讨论】:
旧是指“创建日期”、“修改日期”还是“最后访问”? 检查this和this 【参考方案1】:基于 Vadim 解决方案的更灵活的方法
请记住 os.unlink(fileWithPath)
会删除该文件夹中超过 X 天的所有内容,所以要小心。
############ 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))
【讨论】:
【参考方案2】:此代码删除当前工作目录中 >= 7 天前创建的文件。风险自负。
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))
【讨论】:
如果该脚本在创建 7 天后运行,它会自行删除吗? 是的,除非您明确指定不删除此文件。【参考方案3】:另一个版本:
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 :)
【讨论】:
注意:st_ctime
不代表创建时间。 “这是 inode 的更改时间。每当修改 inode 时都会更新它,例如权限更改等元数据修改,硬链接的链接/取消链接等。”因此,您可能希望根据您处理的数据使用其他东西。例如,我使用st_mtime
,这是最后一次修改的日期。以上是关于删除超过 7 天的文件的主要内容,如果未能解决你的问题,请参考以下文章