当前位置: 首页 > 面试题库 >

Python-如何使用glob()递归查找文件?

邹胜泫
2023-03-14
问题内容

这就是我所拥有的:

glob(os.path.join('src','*.c'))

但我想搜索src的子文件夹。这样的事情会起作用:

glob(os.path.join('src','*.c'))
glob(os.path.join('src','*','*.c'))
glob(os.path.join('src','*','*','*.c'))
glob(os.path.join('src','*','*','*','*.c'))

但这显然是有限且笨拙的。


问题答案:

Python 3.5+

由于你使用的是新的python,因此应pathlib.Path.rglob在pathlib模块中使用。

from pathlib import Path

for filename in Path('src').rglob('*.c'):
    print(filename)

如果你不想使用pathlib,只需使用glob.glob,但不要忘记传递recursive关键字参数。

对于匹配文件以点(。)开头的情况;例如当前目录中的文件或基于Unix的系统上的隐藏文件,请使用以下os.walk解决方案。

较旧的Python版本

对于较旧的Python版本,可os.walk用于递归遍历目录并fnmatch.filter与简单表达式匹配:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.c'):
        matches.append(os.path.join(root, filename))


 类似资料:
  • 问题内容: 使用lxml是否可以递归地找到标签“ f1”?我尝试了findall方法,但仅适用于直系儿童。 我想我应该为此选择BeautifulSoup !!! 问题答案: 您可以使用XPath进行递归搜索:

  • 我试图使用这个递归函数来找到回文字符串,但是代码输出术语<code>alia

  • 本文向大家介绍在Python中使用glob模块查找文件路径的方法,包括了在Python中使用glob模块查找文件路径的方法的使用技巧和注意事项,需要的朋友参考一下 glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:”*”, “?”, “[]“。”*”匹配0个或多个字符;”?”匹配单个字符;”[]“匹配

  • 问题内容: 如何在MySql中运行此查询? 它会显示如下错误消息: 问题答案: 该语句/方法适用于PostgreSQL和Sybase(我想可能还有更多),所以也许您可以看一下: http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html 它应该向您展示一些使用MySQL的方法(以及PHP中的一两个方法,我只知道它不在您的标签列

  • 我试图使用DFS解决一个图形问题,但遇到了一堵墙。这是我在Python3中的实现。unvisited是一个整数数组,start和end是unvisited中的整数,path是一个空数组,在DFS运行时填充,edges是一个边字典。 目标是找到一条从开始到结束访问unvisted中所有int的路径。因此,我遇到了递归的问题(我认为),因为在路径错误的情况下,我不想返回任何东西;相反,我希望DFS继续

  • 我有一个任务,从用户那里得到一个数字输入,例如:“57779227”,我需要返回相同数字的最长序列。在本例中,最长的序列是“777”,返回值应该是3(因为数字“7”在一行中的倍数)。 到目前为止,我写了一个迭代方法***此方法中不使用循环,只使用递归*** 迭代示例: