一尘不染

os.walk没有隐藏的文件夹

linux

我需要列出文件夹中包含目录路径的所有文件。我尝试使用os.walk,这显然是完美的解决方案。

但是,它还会列出隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有没有可以用来使其不产生任何隐藏文件的标志?

跨平台对我而言并不是很重要,如果只适用于linux(。*模式)就可以了


阅读 471

收藏
2020-06-02

共1个答案

一尘不染

不,没有选择os.walk()会跳过这些。您需要自己这样做(这很容易):

for root, dirs, files in os.walk(path):
    files = [f for f in files if not f[0] == '.']
    dirs[:] = [d for d in dirs if not d[0] == '.']
    # use files and dirs

注意dirs[:] =切片分配;os.walk递归遍历中列出的子目录dirs。通过更换 元件
dirs与那些满足条件(例如,目录名称不开始.),os.walk()将不能访问不符合标准的目录。

仅当您在以下文档中将topdown关键字参数保留为时True,此方法才有效:os.walk()

如果topdownTrue,调用者可以修改就地(也许使用dirnames中列表del或切片分配),并且walk()将只递归到他们的名字留在子目录
dirnames中 ;
它可以用来修剪搜索,强加特定的访问顺序,甚至可以walk()在调用者walk()再次恢复之前通知其创建或重命名的目录。

2020-06-02