13.9 通过文件名查找文件

    查找文件,可使用 函数,传一个顶级目录名给它。下面是一个例子,查找特定的文件名并答应所有符合条件的文件全路径:

    保存脚本为文件findfile.py,然后在命令行中执行它。指定初始查找目录以及名字作为位置参数,如下:

    对于每个元组,只需检测一下目标文件名是否在文件列表中。如果是就使用 合并路径。为了避免奇怪的路径名比如 ././foo//bar ,使用了另外两个函数来修正结果。第一个是 ,它接受一个路径,可能是相对路径,最后返回绝对路径。第二个是 os.path.normpath() ,用来返回正常路径,可以解决双斜杆、对目录的多重引用的问题等。

    尽管这个脚本相对于UNIX平台上面的很多查找来讲要简单很多,它还有跨平台的优势。并且,还能很轻松的加入其他的功能。我们再演示一个例子,下面的函数打印所有最近被修改过的文件:

    1. #!/usr/bin/env python3.3
    2.  
    3. import os
    4. import time
    5. def modified_within(top, seconds):
    6. now = time.time()
    7. for path, dirs, files in os.walk(top):
    8. for name in files:
    9. fullpath = os.path.join(path, name)
    10. if os.path.exists(fullpath):
    11. mtime = os.path.getmtime(fullpath)
    12. print(fullpath)
    13.  
    14. if __name__ == '__main__':
    15. import sys
    16. if len(sys.argv) != 3:
    17. print('Usage: {} dir seconds'.format(sys.argv[0]))
    18. raise SystemExit(1)
    19. modified_within(sys.argv[1], float(sys.argv[2]))

    原文: