首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pathlib.Path()、.glob()和多个文件扩展名

Pathlib.Path()、.glob()和多个文件扩展名
EN

Stack Overflow用户
提问于 2017-12-05 21:48:33
回答 5查看 16.8K关注 0票数 16

我需要指定多个文件扩展名,如pathlib.Path(temp_folder).glob('*.xls', '*.txt'):

我该怎么做呢?

https://docs.python.org/dev/library/pathlib.html#pathlib.Path.glob

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-12-05 22:01:57

如果需要使用pathlib.Path.glob()

代码语言:javascript
运行
复制
from pathlib import Path
def get_files(extensions):
    all_files = []
    for ext in extensions:
        all_files.extend(Path('.').glob(ext))
    return all_files

files = get_files(('*.txt', '*.py', '*.cfg'))
票数 13
EN

Stack Overflow用户

发布于 2021-01-28 13:23:23

给出几个不需要编写自定义函数也不需要使用循环并在Linux上工作的单行建议,有点晚了:

pathlib.Path.glob()接受括号中的交错符号。对于".txt“和".xls”后缀的情况,可以这样写

代码语言:javascript
运行
复制
files = pathlib.Path('temp_dir').glob('*.[tx][xl][ts]')

如果您还需要搜索".xlsx“,只需将通配符"*”附加在最后一个右括号之后。

代码语言:javascript
运行
复制
files = pathlib.Path('temp_dir').glob('*.[tx][xl][ts]*')

要记住的一件事是,末尾的通配符不仅会捕获"x",还会捕获最后一个"t“或"s”之后的所有尾随字符。

在搜索模式前加上"**/“将执行前面讨论的递归搜索。

票数 13
EN

Stack Overflow用户

发布于 2019-07-23 15:12:24

您还可以使用pathlib中的语法**,它允许您以递归方式收集嵌套路径。

代码语言:javascript
运行
复制
from pathlib import Path
import re


BASE_DIR = Path('.')
EXTENSIONS = {'.xls', '.txt'}

for path in BASE_DIR.glob(r'**/*'):
    if path.suffix in EXTENSIONS:
        print(path)

如果你想在搜索中表达更多的逻辑,你也可以使用正则表达式,如下所示:

代码语言:javascript
运行
复制
pattern_sample = re.compile(r'/(([^/]+/)+)(S(\d+)_\d+).(tif|JPG)')

此模式将查找与我的示例中的S327_008(_flipped)?.tif匹配的所有图像(tif和JPG)。具体地说,它将收集样本id和文件名。

收集到一个集合中可以防止存储重复项,我发现如果您插入更多的逻辑并希望忽略不同版本的文件(_flipped)时,它有时会很有用。

代码语言:javascript
运行
复制
matched_images = set()

for item in BASE_DIR.glob(r'**/*'):
    match = re.match(pattern=pattern_sample, string=str(item))
    if match:
        # retrieve the groups of interest
        filename, sample_id = match.group(3, 4)
        matched_images.add((filename, int(sample_id)))
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47655205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档