Python 使用os.walk排除根目录

Python 使用os.walk排除根目录,python,os.walk,Python,Os.walk,我试图列出我笔记本电脑上的所有文件,但我想排除一些根目录 例如: 我有以下文件: /Users/teste/demo/file.csv /Users/teste/demo3/file.csv /Users/project/file.csv 我想从/Users/teste/中排除所有文件。为此,我有以下代码: import os exclude = ['/Users/teste/',] for root, dirs, files in os.walk("\\", top

我试图列出我笔记本电脑上的所有文件,但我想排除一些根目录

例如: 我有以下文件:

 /Users/teste/demo/file.csv
 /Users/teste/demo3/file.csv
 /Users/project/file.csv
我想从
/Users/teste/
中排除所有文件。为此,我有以下代码:

import os
exclude = ['/Users/teste/',]
for root, dirs, files in os.walk("\\", topdown=False):
    if root not in exclude:
        for name in files:
            print(name)
但是,我的代码正在打印目录demo和demo3中的文件,因为根目录包含demo部分。如果我打印根目录,我将得到:

/Users/teste/demo 
/Users/teste/demo3 
/Users/project/
我只想包括
/Users/project/file.csv
文件


如何使用父根进行筛选?

您可以使用
startswith
tuple
(非列表)



顺便说一句:

若要使用无法获取列表或元组的函数,则可以使用具有列表理解功能的
any()
检查列表中的所有元素

例如
startswith()

或者对于
regex
(这对于在
exclude
中创建更复杂的元素非常有用)


您在
打印(root)
中得到了什么?也许这和你想象的不一样。我明白我在这个问题上说的了:/Users/teste/demo/Users/teste/demo3/Users/project/你可以一直测试
root.startswith(“/Users/teste/”)
,但是如果我需要过滤更多的方向,我会松开list函数,然后创建一个用于测试列表上所有元素的for循环函数
if not root.startswith( ('/Users/teste/', '/other/folder') ):
import os

exclude = ['/Users/teste/',]

exclude = tuple(exclude)

for root, dirs, files in os.walk("\\", topdown=False):
    if not root.startswith(exclude):
        for name in files:
            print(name)
if not any(root.startswith(x) for x in exclude):
if not any(re.findall(x, root) for x in exclude):