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