python - python - 获取目录中文件名的最高数字
问题描述
我正在一个只读文件系统上开发一个延时相机,它在 USB 记忆棒上写入图像,没有实时时钟和互联网连接,那么我不能使用 datetime 来维护文件的时间顺序并防止覆盖。
所以我可以将图像存储为1.jpg, 2.jpg, 3.jpg
等等,并在 USB 记忆棒上的文件 last.txt 中更新计数器,但我宁愿避免这样做,我试图在启动时计算最后一个文件名,但是拥有9.jpg
并10.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 秒,是否有更快的解决方案将文件分成子文件夹?
解决方案
这里:
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))
推荐阅读
- python - 试图改变机器人的状态
- neo4j - Neo4j - 通过关系创建导入数百万数据
- javascript - 如何在 javascript Object.assign 方法中使用所有函数参数
- .net - IEnumerable.Min() 使用通用对象返回奇怪的结果
- mysql - 我可以选择每一行并限制具有不同值的行吗?
- python - 何修复 playsound excpetion “playbin.set_state 返回
我正在尝试使用该
playsound
模块在 Python 中制作一个简单的节拍器。但是当我运行它时,出现以下错误:Traceback (most recent call last): File "/run/media/mb/Vol
- azure-active-directory - Microsoft Botframework V4 虚拟助手 Azure AD 身份验证
- c - 如何让 C 程序发出 HTTP 请求并读取响应?
- c# - 如何更改一定数量的按钮(x)的不透明度,而不是一一写出来?(C#)
- android - 在 React-Native 中存储不可更改数据的正确方法