【问题标题】:Finding latest file in a folder using python使用python在文件夹中查找最新文件
【发布时间】:2018-05-24 08:17:41
【问题描述】:

我已经为此搜索了答案,但答案仍然给了我an error message,我不被允许在那里提问,因为我必须提出一个新问题。就这样吧……

我需要我的 python 脚本来使用文件夹中的最新文件。

我尝试了几件事,目前这段代码如下所示:

list_of_files = glob.glob('/my/path/*.csv')
latest_file = max(list_of_files, key=os.path.getmtime)

但代码失败并带有以下注释:

ValueError: max()arg 是一个空序列

有人知道为什么吗?

【问题讨论】:

  • 错误告诉您list_of_files 为空,您可能需要先提供完整路径或更改工作目录
  • 您使用的是哪个 Python 版本?哪个操作系统? Python 3 中的max(和min)有一种处理空列表的方法。但是在将list_of_files 传递给max 之前确保list_of_files 不为空会更干净。
  • 谢谢,单独解释错误信息很有帮助。它给了我一个线索来解决问题。我正在使用python 3.6。文件列表不应该为空,并且路径是正确的,据我所知,我必须去弄清楚为什么它返回一个空的文件列表。谢谢!
  • 在执行 max 之前打印出该变量,看看它是否符合您的预期
  • @AntonvBR 不,这会尝试从每个时间戳的max 中创建一个密钥,这没有多大意义,如果您尝试,max 会引发TypeError获得一个数字的最大值而不是一个可迭代的。

标签: python


【解决方案1】:

如果列表不为空应该没问题,但似乎是。所以首先通过打印或类似的方式检查列表是否为空。

我测试了这段代码,它运行良好:

import os
import glob

mypath = "C:/Users/<Your username>/Downloads/*.*"

print(min(glob.glob(mypath), key=os.path.getmtime)) 
print(max(glob.glob(mypath), key=os.path.getmtime)) 

【讨论】:

    【解决方案2】:

    glob.glob 的限制是不匹配以. 开头的文件

    所以,如果你想匹配这些文件,这就是你应该做的——(假设一个目录中有.picture.png

    import glob
    glob.glob('.p*') #assuming you're already in the directory
    

    此外,在对它们进行操作之前检查目录中存在的文件数量也是一种理想的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2015-10-03
      相关资源
      最近更新 更多