猿问

使用 glob 或 os.walk() 忽略特定目录中的文件

我想排除目录“dir3_txt”,以便我只能files('.txt')从其他目录中捕获。我试图排除如下所示的目录,但无法弄清楚如何将所有具有 .txt 的文件作为 ext 其他文件,以便在dir3_txt下面使用它:


for root, dirs, files in os.walk('.'):

   print (root)

   dirs[:] = [d for d in dirs if not d.startswith('dir3')]

   for file in files:

        print (os.path.join(root, file))

我正在考虑 glob(从堆栈本身获得),但不确定如何调整 glob 以使用它。


for file in os.walk('.'):

   for txt in glob(os.path.join(files[0], '*.txt')):

       print(txt)

我经历了os.walk中的排除目录,但是提供的解决方案对我没有帮助,它仅说明跳过目录也无济于事,因为我需要从其他目录中获取文件,如果仅使用glob可以做到这一点更好?


呼啦一阵风
浏览 245回答 2
2回答

汪汪一只猫

一个简单的解决方案就是对由os.walk以下方法返回的目录路径和文件进行字符串比较:for root, dirs, files in os.walk('.'):   if "/dir3_txt/" not in root:       for file in files:            if file.endswith(".txt"):                print (os.path.join(root, file))

慕田峪7331174

for root, dirs, files in os.walk('.'):   print (root)   dirs[:]= [d for d in dirs if d[:4]!='dir3']   for file in files:      if file[-4:]=='.txt':        print (os.path.join(root, file))我现在没有任何系统可以测试这一点,因此,如果有任何问题,请发表评论。编辑:现在,它仅检测“ .txt”文件。
随时随地看视频慕课网APP

相关分类

Python
我要回答