Python中实现读取与windows资源管理器中相同顺序文件,顺序排列

1.背景

  • 目前在做一个批量将图片插入ppt中的软件,所有的东西都已经写完了,功能也可以实现,但是做成的PPT页面非常混乱,与windows资源管理器中看到的顺序不一样。
  • 通过查阅了很多文章,大部分都是提取名称的后几个数字排序,复杂的是使用正则表达排序。
  • 经过调研可知,顺序混乱是由于使用os.listdir()读取文件夹下的文件,这个读取的结果是乱序的,使用sorted()排序针对简单的纯数字名称是可以实现的,网上很多相关代码可以参考。但是对于负责的须使用正则表达,但是正则表达针对不同的文件名规律有不同的写法。
  • 进一步调研,可以采用自然排序的方式,需调用第三方库natsort

2.操作流程

2.1 安装第三方库

pip install natsort -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com #从阿里云服务器获取第三方库

2.2 示例

代码示例
from natsort import ns, natsorted
import os

path = r"E:\code\picture2ppt"
list = os.listdir(path)
files = natsorted(list,alg=ns.PATH)
print(files)
Windows资源管理器中排列顺序:

在这里插入图片描述

输出结果
自然排序: ['t0.png', 't1.png', 't2.png', 't3.png', 't4.png', 't5.png', 't6.png', 't7.png', 't8.png', 't9A0.png', 't9B4.png', 't9C0.png', 't10.png', 't11A0.png', 't11B4.png', 't11C0.png', 't12A0.png', 't12B4.png', 't13A0.png', 't13B4.png', 't13C0.png', 't14A0.png', 't14B4.png', 't15A0.png', 't15B4.png', 't16A0.png', 't16B4.png', 't16C0.png', 't17.png', 't18A0.png', 't18A1.png', 't18B3.png', 't18B4.png', 't18C0.png', 't19.png', 't20A0.png', 't20A1.png', 't20B4.png', 't20C0.png', 't21A0.png', 't21B4.png', 't21C0.png', 't22A0.png', 't22A1.png', 't22B4.png', 't22C0.png', 't23A0.png', 't23B4.png', 't23C0.png', 't24A0.png', 't24B4.png', 't24C0.png', 't25A0.png', 't25B4.png', 't25C0.png', 't26A0.png', 't26B4.png', 't26C0.png', 't27.png', 't28.png', 't29A0.png', 't29A1.png', 't29B4.png', 't29C0.png', 't30A0.png', 't30A1.png', 't30B4.png', 't30C0.png', 't31A0.png', 't31B3.png', 't31B4.png', 't31C0.png', 't32A0.png', 't32B4.png', 't32C0.png', 't33A0.png', 't33B4.png', 't34A0.png', 't34A1.png', 't34B3.png', 't34B4.png', 't34C0.png', 't35A0.png', 't35B4.png', 't35C0.png', 't36A0.png', 't36B4.png', 't36C0.png', 't37A0.png', 't37B4.png', 't37C0.png', 't38.png']
随机排序: ['t0.png', 't1.png', 't10.png', 't11A0.png', 't11B4.png', 't11C0.png', 't12A0.png', 't12B4.png', 't13A0.png', 't13B4.png', 't13C0.png', 't14A0.png', 't14B4.png', 't15A0.png', 't15B4.png', 't16A0.png', 't16B4.png', 't16C0.png', 't17.png', 't18A0.png', 't18A1.png', 't18B3.png', 't18B4.png', 't18C0.png', 't19.png', 't2.png', 't20A0.png', 't20A1.png', 't20B4.png', 't20C0.png', 't21A0.png', 't21B4.png', 't21C0.png', 't22A0.png', 't22A1.png', 't22B4.png', 't22C0.png', 't23A0.png', 't23B4.png', 't23C0.png', 't24A0.png', 't24B4.png', 't24C0.png', 't25A0.png', 't25B4.png', 't25C0.png', 't26A0.png', 't26B4.png', 't26C0.png', 't27.png', 't28.png', 't29A0.png', 't29A1.png', 't29B4.png', 't29C0.png', 't3.png', 't30A0.png', 't30A1.png', 't30B4.png', 't30C0.png', 't31A0.png', 't31B3.png', 't31B4.png', 't31C0.png', 't32A0.png', 't32B4.png', 't32C0.png', 't33A0.png', 't33B4.png', 't34A0.png', 't34A1.png', 't34B3.png', 't34B4.png', 't34C0.png', 't35A0.png', 't35B4.png', 't35C0.png', 't36A0.png', 't36B4.png', 't36C0.png', 't37A0.png', 't37B4.png', 't37C0.png', 't38.png', 't4.png', 't5.png', 't6.png', 't7.png', 't8.png', 't9A0.png', 't9B4.png', 't9C0.png']
总结

可以看到结果是符合我们的需求的。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值