python - 向上遍历目录结构,直到到达文件系统顶层

标签 python traversal

我已经创建了一个脚本,该脚本在备份后在每个目录的最上层设置“FLAG”。

现在我需要一个可以“在任何目录中”运行的脚本,并且可以通过读取“FLAG”的上次修改时间来告诉我“上次成功备份运行的时间”。

当然,我也可以手动找出当前目录所在的文件系统,然后在目录层次结构中向上查找,直到到达文件系统的顶级目录并在那里找到标志文件,但这不是很方便。我想编写的命令会自动执行相同的操作。

1)我不知道如何执行在目录结构上向上遍历直到到达文件系统顶层的部分。

2)读取标志时间可能会像这样工作:

import time
fileTileInSeconds = os.path.getmtime("FLAG")   (not sure)
ModDate = time.localtime(fileTileInSeconds)
print ModDate.tm_year,ModDate.tm_mon,ModDate.tm_mday,ModDate.tm_hour,ModDate.tm_min,ModDate.tm_sec
quit()

任何想法/建议将不胜感激。

最佳答案

使用os.path.parent向上查找目录树,并使用os.stat查看每个目录位于哪个设备上。当设备发生变化时,您就跨越了文件系统的边界。像这样:

#!/usr/bin/python

import os
import stat
import sys

def find_mount(path):
    path = os.path.realpath(path)
    s = os.stat(path)[stat.ST_DEV]
    ps = s
    while path != '/' and ps == s:
        parent = os.path.dirname(path)
        ps = os.stat(parent)[stat.ST_DEV]
        if ps == s:
            path = parent
    return path

if __name__ == "__main__":
    for path in sys.argv[1:]:
        print find_mount(path)

关于python - 向上遍历目录结构,直到到达文件系统顶层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139576/

相关文章:

Python:如何遍历一个列表[Dict{List[Dict{}]}]

python - 按源优先级查找替换名称(python)

python - 如何在 python 类中属性为 True 时阻止方法

python - 如何在 Python 中获取数字列表的内存印记?

java - 使用两个索引从两端迭代数组

jquery遍历

Javascript HTML .children 遍历

python - Pandas 情节系列,系列名称排成一行

python 3 : HTTP Error 302 while using urllib

python - Pyramid 遍历正在做我的头