过滤并列出特定的文件名

编程入门 行业动态 更新时间:2024-10-22 23:38:28
本文介绍了过滤并列出特定的文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我通过编写以下代码生成了文件列表:

I generated a list of files by writing the following code:

files = [file for file in Path(main_directory).rglob('*filename*v*.xlsx')]

它检索文件列表:

files[0] = .../2018/filename 2018 v 1.xlsx files[1] = .../2019/filename 2019 v 5.xlsx files[2] = .../2020/filename 2020 v 4.xlsx files[3] = .../2020/filename 2020 v 5.xlsx ... files[13] = .../2020/filename 2020 v 10.xlsx

我该怎么做才能获得每年只给我最大的 v 的输出,所以我会有这样的输出?

What can I do to have an output to give me only the biggest v for each year, so I will have an output like this?

files[0] = .../2018/filename 2018 v 1.xlsx files[1] = .../2019/filename 2019 v 5.xlsx files[2] = .../2020/filename 2020 v 10.xlsx

我必须获得最大的 v ,这并不意味着它具有最新的修改日期,因此我无法使用该功能.我已经尝试过 os.path 和 re ,但是我找不到任何地方.

I have to get the biggest v which doesn't mean it has the latest modified date, so I can not use that functionality. I have tried os.path and re but I am getting no where.

推荐答案

假设相同年份的文件名在一起,您可以尝试一下.

Assuming that the filenames of same years are together you can try this.

x=["2018/filename 2018 v 1.xlsx","2019/filename 2019 v 5.xlsx","2020/filename 2020 v 4.xlsx","2020/filename 2020 v 5.xlsx","2020/filename 2020 v 10.xlsx"] from itertools import groupby import re for i,j in groupby(x, lambda x:int(re.findall(r"(?<=filename )\d+", x)[0])): print max(j, key=lambda x:int(re.findall(r"(?<=v )\d+(?=\.xlsx)", x)[0]))

输出:

2018/filename 2018 v 1.xlsx 2019/filename 2019 v 5.xlsx 2020/filename 2020 v 10.xlsx

更多推荐

过滤并列出特定的文件名

本文发布于:2023-11-01 17:56:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1550013.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件名

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!