当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python os.fwalk用法及代码示例


用法:

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

它的行为与 walk() 完全相同,只是它产生一个 4 元组 (dirpath, dirnames, filenames, dirfd) ,并且它支持 dir_fd

dirpathdirnamesfilenameswalk() 输出相同,dirfd 是引用目录 dirpath 的文件说明符。

此函数始终支持相对于目录说明符的路径,而不是遵循符号链接。但是请注意,与其他函数不同,follow_symlinksfwalk() 默认值为 False

注意

由于 fwalk() 产生文件说明符,因此它们仅在下一个迭代步骤之前有效,因此如果您想保留它们更长的时间,您应该复制它们(例如使用 dup() )。

这个例子显示了起始目录下每个目录中非目录文件占用的字节数,除了它不在任何 CVS 子目录下查找:

import os
for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
    print(root, "consumes", end="")
    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
          end="")
    print("bytes in", len(files), "non-directory files")
    if 'CVS' in dirs:
        dirs.remove('CVS')  # don't visit CVS directories

在下一个示例中,自下而上遍历树是必不可少的:rmdir() 不允许在目录为空之前删除目录:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
    for name in files:
        os.unlink(name, dir_fd=rootfd)
    for name in dirs:
        os.rmdir(name, dir_fd=rootfd)

使用参数 toptopdownonerrorfollow_symlinksdir_fd 引发审计事件 os.fwalk

可用性:Unix。

3.3 版中的新函数。

在 3.6 版中更改:接受一个path-like 对象.

在 3.7 版中更改:增加了对bytes路径。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 os.fwalk。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。