「x日より古いすべてのフォルダを取得する」を簡潔に表現するにはどうすればよいですか
getOldDirs(dirPath、olderThanDays)メソッドがあります。このメソッドは、指定されたルートフォルダーをウォークスルーし、たとえば7日より古いフォルダーのリストを返す必要があります。
上記の関数を別の関数cleanOldFolders()から呼び出します。cleanOldFolders()は、「rm-Rf」のようなフォルダを削除します
私が持っているコード、ループを簡潔に変更するにはどうすればよいですか?
"""
Clean oldFolders
"""
def cleanOldFolders(self):
pathString = self.folderRoot + '/' + self.configMode + '/' + self.appId
oldDirList = self.getOldDirs(pathString, 7);
# Notify user that the following folders are deleted
# remove all old dirs perhaps using shutil.removetree for each folder oldDirList, rm -Rf
return
古いdirsを取得します。
"""
get all subfolders under dirPath older than olderThanDays
"""
def getOldDirs(self,dirPath, olderThanDays):
# What is the concise way of expressing Get me list of all dir/subdirs from "dirPath" that are older than "olderThanDays"
# I know I have to use os.walk,
# I want a concise loop like this - but should recurse using os.walk
a = [os.path.join(dirPath, myfile) for myfile in os.listdir(dirPath)
if (os.path.isdir(os.path.join(dirPath, myfile)) and
(self.isOlder(os.path.join(dirPath, myfile), olderThanDays))
)]
# for root, dirs, files in os.walk(dirPath):
# for name in dirs:
# print os.path.join(root, name)
return a