<p>在这种情况下,用<a href="https://docs.python.org/2/library/glob.html" rel="nofollow">^{<cd1>}</a>列出所有目录可能更容易,以匹配您的层次结构模式。您可以使用<a href="https://docs.python.org/2/library/os.path.html#os.path.getctime" rel="nofollow">^{<cd2>}</a>为每个目录获取一个时间戳来进行排序和筛选</p>
<pre><code>from glob import glob
import os.path
import time
def find_sessions_to_delete(cutoff):
# produce a list of (timestamp, path) tuples for each session directory
session_dirs = [(os.path.getctime(p), p) for p in glob('/root/job*/session*')]
session_dirs.sort(reverse=True) # sort from newest to oldest
# remove first two elements, they are kept regardless
session_dirs = session_dirs[2:]
# return a list of paths whose ctime lies before the cutoff time
return [p for t, p in session_dirs if t <= cutoff]
cutoff = time.time() - (7 * 86400) # 7 days ago
sessions_to_delete = find_sessions_to_delete(cutoff)
</code></pre>
<p>我包含了一个7天前的截止日期示例,从<a href="https://docs.python.org/2/library/time.html#time.time" rel="nofollow">^{<cd3>}</a>开始计算,它返回一个整数值,表示自1970年1月1日(UNIX纪元)以来经过的秒数。在</p>
<p>如果您需要对每个作业目录<em>执行此操作,请对每个此类目录执行相同的操作<em>,并合并结果列表:</p>
^{pr2}$