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