a = '/mnt/task/a'
b = '/mnt/task/b'
在a
和b
,
有一些文件夹,与像201212194546921-6ab-45654545d-5445c
正如你看到的名称,文件夹的名字是由东西如序列号和日期时该文件夹已生成。
如果我想删除某个时间点之前生成的文件夹,我如何查找并删除它们,例如:
上周前删除文件夹与Python脚本删除文件夹
任何人都可以在这里帮助我吗?
a = '/mnt/task/a'
b = '/mnt/task/b'
在a
和b
,
有一些文件夹,与像201212194546921-6ab-45654545d-5445c
正如你看到的名称,文件夹的名字是由东西如序列号和日期时该文件夹已生成。
如果我想删除某个时间点之前生成的文件夹,我如何查找并删除它们,例如:
上周前删除文件夹与Python脚本删除文件夹
任何人都可以在这里帮助我吗?
有几个Python模块,可以帮助你做到这一点:在给定的路径 os.path.getctime(fileName)
回报文件创建日期的所有文件夹 os.walk(path)
迭代。 shutil.rmtree(folder)
删除文件夹及其内容
,如果你把它们放在一起,你会得到这样的事情:
import os
import time
import shutil
for folder ,subFolder, filenames in os.walk('/mnt/task/a'):
print folder , time.ctime(os.path.getctime(folder))
if os.path.getctime(folder) < (time.time() - 60*60*24*7):
print 'deleting: ' , folder
#shutil.rmtree(folder)
while subFolder:
subFolder.pop()
注意这个代码删除文件夹,只基于文件创建时间! 除文件日期外,您可能还需要更多逻辑。
OP想要使用文件的名称,而不是文件的创建时间,尽管它们用于相同的目的... – pradyunsg 2013-03-11 18:00:55
假设你要删除的文件夹是直接在a
或b
:
下面的代码创建的每个文件夹的日期时间对象,然后使用日期之间的差来确定要删除的文件夹中。
import os, datetime, errno, stat, shutil
a =
b =
date = ''
ref = datetime.date(2013,12,20)
def parse_name(fname):
'''Returns False when unsucessful, datatime.date() when successful'''
if len(fname) > 9:
try:
year = int(fname[:4])
month = int(fname[4:6])
day = int(fname[6:8])
return datetime.date(year, month, day)
except ValueError,e:
return False
else:
return False
f2remove = []
for dirc in (a,b):
for item in os.listdir(dirc):
if os.path.isdir(os.path.join(dirc,item)):
x = parse_name(item)
if x and (ref - x).days >= 0:
f2remove.append(os.path.join(dirc,item))
# --- deleting files --- #
for filename in f2remove:
print 'removing', filename.split('\\')[-1]
shutil.rmtree(filename)
结帐[python的os模块(http://docs.python.org/2.7/library/os.html#module-os)尝试一些东西,并更新你的一些代码,当你被卡住质疑 – 2013-03-11 09:31:58
并尝试更好地格式化您的问题。这很难阅读。干杯。 – wrgrs 2013-03-11 10:11:09
你想包含子文件夹吗? – pradyunsg 2013-03-11 11:32:43