python - 以数字顺序读取文件名,而不是使用 glob 进行 ASCI 排序?
问题描述
我有一个文件列表,命名如下:
file1.png
file2.png
...
file9.png
file10.png
file11.png
...
file99.png
file100.png
file101.png
...
当我使用此代码阅读目录时:
images = [file for file in glob.glob(image_dir + '*')]
我得到一个输出,它按如下方式对文件名进行排序:
[image_dir/file1.png
image_dir/file10.png
image_dir/file100.png
image_dir/file101.png
...
image_dir/file109.png
image_dir/file11.png
image_dir/file110.png
...
image_dir/file119.png
image_dir/file12.png
image_dir/file120.png
...]
如何以正确的数字顺序获取文件?
解决方案
尝试使用:
print(sorted(images, key=lambda x: int(x.split('file')[-1].split('.')[0])))
推荐阅读
- python - Sphinx 未删除 html 输出中的 doctest 标志
- r - 为 ggplot2 放置方程:stat_smooth
- amazon-s3 - 将令牌与 AWS lambda 结合使用的正确方法是什么?
- python - 是否可以让装饰器在异步执行器中运行阻塞功能?
- powershell - 使用 powershell 操作 AD 组 - 提示选择中的每个对象是或否?
- c# - C# framework 2.0 从方法返回两个值
- javascript - 我需要在量角器中关闭并打开新浏览器
- android - 禁用三星浏览器的弹出播放器功能
- c - 尝试在 C 中实现 mini-http 持久服务器
- ruby - 如何让 SASS 在 Mac 的 Netbeans 中工作