按照文件夹读取文件名称
按照文件夹读取文件名称
import os
from natsort import os_sorted
folder_path = 'D:\桌面\V测试\缺陷2\严重' # 请替换成你的实际路径
# 获取所有文件和文件夹的名称,并按Windows规则排序
all_items = os_sorted(os.listdir(folder_path))
# 筛选出图片文件 (根据需要添加更多图片格式)
image_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff')
image_files = [f for f in all_items if f.lower().endswith(image_extensions)]
# 打印结果
for img in image_files:
print(img)
Windows资源管理器文件名排序
这学期担任了本科生教学助教,平时有逐个批改学生作业(作业通常按学生名字进行命名)然后记录成绩到另外一个文件的需求。为了加快批改作业的效率,考虑把作业文件夹里面的作业的文件名抽取出来,拷贝到成绩文件里面,这样当按照Windows资源管理器排的顺序批改完作业后,可以很快地把成绩加到作业文件名的后面(顺序是一致的,登记成绩时省了找作业对应的学生所在位置的时间)。
想法是美好的,现实是打脸的:通过Python遍历目录得到的文件名和Windows资源管理器中显示的文件名的顺序是不一样的,比如Python遍历目录得到文件名列表是['万xx.jpg', '何xx.jpg', '何xx.jpg', '余xx.jpg'],而Windows资源管理器中显示的却是['安xx.jpg', '白x.jpg', '曹xx.jpg', '陈xx.jpg']。一开始我以为后者是按拼音进行排序的,还尝试了安装能够把中文转换成拼音的模块,基于文件名的拼音进行排序,但实际上该顺序与通过拼音得到的顺序仍然有部分不同。通过网上查阅资料发现,Windows资源管理器是按照所谓的自然排序的方法进行排序的。
背景:自然排序
什么是自然排序?
“naturally” is rather ill-defined, but in general it means sorting based on meaning and not computer code point
怎样按自然排序的规则进行排序?
-
Java的类可以通过实现Comparable接口、重写compareTo方法指定自然排序的规则;
-
Python通过为函数list.sort或sorted的key参数指定排序规则即可,比如:
sorted(['a', 'b', 'c', 'A', 'B', 'C'], key=str.lower)得到['a', 'A', 'b', 'B', 'c', 'C']。

浙公网安备 33010602011771号