我需要列出文件夹中包含目录路径的所有文件。我尝试使用os.walk,这显然是完美的解决方案。
os.walk
但是,它还会列出隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有没有可以用来使其不产生任何隐藏文件的标志?
跨平台对我而言并不是很重要,如果只适用于linux(。*模式)就可以了
不,没有选择os.walk()会跳过这些。您需要自己这样做(这很容易):
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()将不能访问不符合标准的目录。
dirs[:] =
dirs
.
仅当您在以下文档中将topdown关键字参数保留为时True,此方法才有效:os.walk()
topdown
True
如果topdown是True,调用者可以修改就地(也许使用dirnames中列表del或切片分配),并且walk()将只递归到他们的名字留在子目录 dirnames中 ; 它可以用来修剪搜索,强加特定的访问顺序,甚至可以walk()在调用者walk()再次恢复之前通知其创建或重命名的目录。
del
walk()