Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在目录结构上向上遍历,直到到达文件系统顶层_Python_Traversal - Fatal编程技术网

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

Python 在目录结构上向上遍历,直到到达文件系统顶层,python,traversal,Python,Traversal,我已经创建了一个脚本,在每个目录的最上层备份后设置“标志” 现在,我需要一个可以在“任何目录”中运行的脚本,它可以通过读取“标志”的上次修改时间来告诉我“上次成功备份何时运行” 当然,我也可以手动找出当前目录所在的文件系统,然后进入目录层次结构,直到到达文件系统的顶级目录并在那里找到标志文件,但这不是很方便。我要编写的命令也会执行相同的操作,但会自动执行 1) 在到达文件系统顶层之前,我不知道如何在目录结构上向上遍历 2) 阅读国旗时间可能是这样的: import time fileTileIn

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

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

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

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)