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

但是,它也列出了隐藏的文件夹和文件.我希望我的应用程序不要列出任何隐藏的文件夹或文件.有没有什么标志可以让它不产生任何隐藏文件?

跨平台对我来说并不重要,如果它只适用于linux(.*pattern)

推荐答案

不,没有选项可以跳过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个目录中的elements个替换为符合标准的目录(例如,名称不以.开头的目录),os.walk()将不会访问不符合标准的目录.

这只适用于将topdown关键字参数从documentation of os.walk()改为True的情况:

topdownTrue时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),walk()将只递归到名称保留在dirnames中的子目录中;这可以用来删减搜索,强制执行特定的访问顺序,甚至可以在再次恢复walk()之前通知walk()调用者创建或重命名的目录.

Linux相关问答推荐

如何确定Linux上的最大静态TLS(线程本地存储)块大小?

如何在带模式的文件频繁更改的管道中使用grep-f带模式的文件?

C++调试器如何知道如何在源代码和可执行文件之间映射行?

更改 awk 中的上一个重复行

awk 不打印所需的 df 输出

awk/sed 命令仅在模式 2 匹配时打印模式 1

如何为命令的所有选项启用无密码 sudo?

你如何在 CentOS9 上使用 C++ fmt?

如何用 Sed 替换 Match 后的 2 个连续行

如何从linux调度程序中屏蔽一个cpu(防止它调度线程到那个cpu上)?

如何安装脚本以从命令行的任何位置运行?

如何在 Linux 中向应用程序发出信号而不杀死它?

Linux 进程在后台 - 在作业(job)中 Stopped停止?

如何判断 Ubuntu 12.04 LTS 上是否安装了多个版本的 PHP?

如何将执行的shell命令的结果存储在python的变量中?

在 cron 作业(job)中执行 PHP 脚本

如何在 UNIX 上的 $PATH 中转义冒号 (:)?

Linux 中的直接内存访问

*nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

如何知道linux调度器时间片?