为了账号安全,请及时绑定邮箱和手机立即绑定

使用python在每个子目录中查找文件名中编号最大的文件?

使用python在每个子目录中查找文件名中编号最大的文件?

撒科打诨 2021-04-05 13:09:05
我试图在每个子目录的文件名中找到编号最大的文件。这样我就可以完成打开每个子目录中的最新文件的操作。每个文件将遵循日期filename.xlsx的命名对流。前任。20180620文件名.xlsx我有一个代码可用于在一个目录中搜索最大数量的代码。dirname = py.path.local(path)list_of_files = []for file in dirname.visit(fil='*.xlsx', bf=True):    list_of_files.append(file)largest = max(list_of_files)print (largest)我是Python的新手,我还不太清楚如何使这种样式的代码正常工作,以查找目录中每个子目录中编号最大的文件。我已经尝试了以下代码的多种变体,但是我无法让它仅打印出每个子目录中编号最大的文件。list_of_files = []for root, dirs, files in os.walk(path):    for name in files:        if name.endswith((".xlsx")):            list_of_files.append(files)            largest = max(list_of_files)            print (largest)任何帮助将不胜感激!
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您的第二个代码块几乎可以完成您想做的事情,只是您的操作嵌套不正确。


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

    # new subdir, so let's make a new...

    list_of_files = []

    for name in files:

        if name.endswith((".xlsx")):

            list_of_files.append(name)  # you originally appended the list of all names!

    # once we're here, list_of_files has all the filenames in it,

    # so we can find the largest and print it

    largest = max(list_of_files)

    print (largest)

如果我可以建议一个较短的解决方案:


[(root, max(fname for fname in files if fname.endswith(".xlsx"))) for

 root, dirs, files in os.walk(path)]

这将为您提供(dirname, largest_filename)成对的列表,而不仅仅是将它们打印到屏幕上。


查看完整回答
反对 回复 2021-04-09
  • 1 回答
  • 0 关注
  • 822 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信