如何让os.listdir返回的文件列表与图1的排序效果一致?
解决os.listdir排序不符需求的问题
如果os.listdir()返回的文件顺序和你想要的相反,直接反转列表就能得到目标效果:
import os # 替换为你的目标目录路径 dir_path = "/path/to/your/directory" # 获取默认排序的文件列表 file_list = os.listdir(dir_path) # 反转列表得到所需顺序 target_order = file_list[::-1]
如果你的文件名包含数字,需要自然排序(比如file1.txt、file2.txt...file10.txt按数字递增排列,而非默认字符串排序的file1.txt、file10.txt、file2.txt),可以用以下方法:
方法1:使用第三方库natsort
先安装库:
pip install natsort
然后排序:
import os from natsort import natsorted dir_path = "/path/to/your/directory" # 自然排序,reverse=False为正序,True为倒序 target_order = natsorted(os.listdir(dir_path), reverse=False)
方法2:自定义排序规则(无需第三方库)
import os import re def natural_sort_key(s): # 拆分字符串中的数字和非数字部分,数字转为整数用于排序 return [int(part) if part.isdigit() else part.lower() for part in re.split('([0-9]+)', s)] dir_path = "/path/to/your/directory" # 按自定义规则排序,reverse参数控制正/倒序 target_order = sorted(os.listdir(dir_path), key=natural_sort_key, reverse=False)
内容的提问来源于stack exchange,提问作者Soon Yuan Chi 41013018E
相关产品推荐
相关产品推荐

