首页 > 解决方案 > python - 获取目录中文件名的最高数字

问题描述

我正在一个只读文件系统上开发一个延时相机,它在 USB 记忆棒上写入图像,没有实时时钟和互联网连接,那么我不能使用 datetime 来维护文件的时间顺序并防止覆盖。

所以我可以将图像存储为1.jpg, 2.jpg, 3.jpg等等,并在 USB 记忆棒上的文件 last.txt 中更新计数器,但我宁愿避免这样做,我试图在启动时计算最后一个文件名,但是拥有9.jpg10.jpg print(max(glob.glob('/home/pi/Desktop/timelapse/*')))返回我9.jpg,我也认为 glob 对于数千个文件会很慢,我该如何解决这个问题?

编辑

我找到了这个解决方案:

import glob
import os
import ntpath
max=0
for name in glob.glob('/home/pi/Desktop/timelapse/*.jpg'):
    n=int(os.path.splitext(ntpath.basename(name))[0])
    if n>max:
        max=n
print(max)

但是每 10.000 个文件大约需要 3 秒,是否有更快的解决方案将文件分成子文件夹?

标签: pythonmaxfilenamesglob

解决方案


这里:

latest_file_index = max([int(f[:f.index('.')]) for f in os.listdir('path_to_folder_goes_here')])

另一个想法是只使用文件列表的长度(假设文件夹中的所有文件都是jpg文件)

latest_file_index = len(os.listdir(dir))

推荐阅读