利用列表推导式遍历子目录PDF文件

一、问题的提出

之前,我们探索了如何用Python来遍历子目录文件,可以采用pathlib,os等来实现,可谓是无法八门,但是上面提到的方法用到的代码还是有点儿多,于是,我考虑如何用列表推导式来减少代码,使程序运行的速度更快。

二、列表推导式遍历子目录

  1. 目标:遍历当前目录及子目录下所有的pdf文件,包括后缀是.PDF的文件
  2. 方法:我们尝试了以下几种方法
import os,glob
from pathlib import Path
files = os.scandir()
print([file.name for file in os.scandir() if file.is_file() and file.name.endswith(".pdf")])  #第一种方法
print([file for file in os.listdir() if file.endswith(".pdf")]) # 第二种方法
print([file.name for file in Path(".").rglob(r"*.pdf")]) #第三种方法
print([file for file in os.walk(".")][0][2]) # 第四种方法
print([file for file in glob.glob("*.pdf")]) # 第五种方法

3. 效果展示

效果展示

3. 方法评估

第一种方法用scandir(),速度要快于os.walk(),可以获取子目录。第二种方法无法获取子目录,所以当遍历所有子目录时,建议用scandir()。

第三种方法和第五种方法,可以实现遍历扩展名为【.pdf】和【.PDF】的文件,而不用指定扩展名大小写,因此较为精确,因此推推荐第三种和第五种方法。

第四种方法用os.walk()和列表推导式只能得出子目录的文件,不能指定文件属性,因此较为不便。

三、学后反思

  1. 知道了如何遍历子目录,还需要知道如何快速遍历,因为有时文件比较多。
  2. 列表推导式在遍历目录时可以简化流程,减少代码量,提升效率,因此可以在Python中多多使用。
  3. 残途同归的多种方法可以为我们提供解决问题的不同思路,便于我们进行比较,找到更为合适的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PythonFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值