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

news2024/11/26 0:37:08

一、问题的提出

之前,我们探索了如何用Python来遍历子目录文件,详情可以见下面的文章:

PythonFan:Python遍历子目录文件的多种方法5 赞同 · 0 评论文章正在上传…重新上传取消icon-default.png?t=N4HBhttps://zhuanlan.zhihu.com/p/609327324

以上方面有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. 残途同归的多种方法可以为我们提供解决问题的不同思路,便于我们进行比较,找到更为合适的方法。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

t检验.医学统计实例详解

t检验是医学统计学中常用的一种假设检验方法,用于比较两个样本均值是否有显著差异。它可以帮助医学研究者确定一个治疗方法或药物是否显著地改善了患者的症状或生理指标。 在医学研究中,t检验常被用来: 比较两个独立样本的均值:…

这个 归并排序详解过程 我能吹一辈子!!!

文章目录 归并排序概念归并排序算法思路归并排序递归实现归并排序非递归实现 归并排序概念 1945年,约翰冯诺依曼(John von Neumann)发明了归并排序,这是典型的分治算法的应用。 归并排序(Merge sort)是建立…

【2023秋招】华为od22-12-14三道题(思路+代码)

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…

Godot引擎 4.0 文档 - 循序渐进教程 - 监听玩家输入

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Listening to player input — Godot Engine (stable) documentation in English 监听玩家输入 在上一课创建您的第一个脚本的基础上,让我们看看任何游戏…

Linux基本指令实现4及热键指令详解

目录 Linux热键补充: 1.bc指令: Tab键的智能补充: ctrlc键: uname指令: lscpu指令: lsmem指令: df -h指令: 关机指令: 扩展指令: Linux热键补充&#…

【MySQL通关之旅】从山脚到山顶(傲视群雄版)

查 基本查询 select 查询指定 name,age 字段并返回 select name,age from 表名 查询所有字段并返回 select * from 表名 查询指定 name,age 字段并起别名(姓名,性别) 返回 select name as ‘姓名’,age as ‘性别’ from 表名 去除某字段重复记录 select distinct 字段名 from…

RSA数学基础 连分数

前言 最近在学rsa,补一下连分数 定义 形如 a 0 1 a 1 1 a 2 1 a 3 1 … a_{0}\frac{1}{a_{1}\frac{1}{a_{2}\frac{1}{a_{3}\frac{1}{\ldots}}}} a0​a1​a2​a3​…1​1​1​1​ 的分数 连分数分为有限连分数无限连分数 如上是一个无限连分数 任何一个有理数都可以表示…

【youcans 的图像处理学习课】21. Haar 小波变换

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】21. Haar 小波变换 1. 小波变换1.1 小波变换基本概念例程 17_1:常用小波族的图像 1.2 连续小波变换1.3 离散小波变换&a…

【C生万物】 字符串内存函数篇 (下)

欢迎来到 Claffic 的博客 💞💞💞 👉 专栏:《C生万物 | 先来学C》👈 前言: 承接上篇,在认识了常用的字符串和内存函数后,带大家实现几个函…

idea把项目上传到码云

1. 为项目创建仓库 2. 选中中项目右击git, 先add, 在commit Directory 3. 设置远程码云项目地址 4. push项目, ok。 注意: 如果你在最后push出现以下提示,则说明提交失败 Push to origin/master was rejected(译文:推送到原点/master被拒绝…

联合阿里在职测开工程师耗时一个星期写的 【接口测试+自动化接口接口测试详解]

前言: 兄弟们如果本文让你感觉能学到东西就麻烦各位动动发财的手来个一键三连,听说点赞,收藏,评论,关注的兄弟已经跳槽涨薪发财了哦。 【文章末尾给大家留下了大量的福利】 1:json模块的使用  字典是一种…

华为OD机试真题 Java 实现【最大花费金额】【2023Q1】

一、题目描述 双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件,而且想尽可能的花完资金。 现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额。 …

MMDetection 3D入门

MMDetection 3D入门 文章目录 MMDetection 3D入门介绍架构模块核心模块与相关组件公共基础模块 依赖安装最佳实践验证安装 测试数据create_data.py修改数据目录 train.py整体流程命令行参数配置文件中为什么传入参数是 dictRunner函数中参数含义结合图示来理清其中数据的流向与…

深度学习图像识别模型:递归神经网络

深度学习是一种人工智能技术,它用于解决各种问题,包括自然语言处理、计算机视觉等。递归神经网络(Recurrent Neural Network,RNN)是深度学习中的一种神经网络模型,主要用于处理序列数据,例如文本…

电子电气架构——IP地址获取方式汇总

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…

基于MATLAB的数字信号处理第1章

1.正弦振动程序 %Sample1_1 dt 0.02; %采样间隔 f3; %采样频率为3Hz t0:dt:5; %持续时间 x0.5*sin(2*pi*f*t1); %信号 plot(t,x); %绘制信号图形 xlabel(时间/s); %显示横坐标信息 ylabel(振幅); %显示纵坐标信息 2.两同频振动的合成 %Sample1_2; f3; dt…

博学谷学习记录】超强总结,用心分享 | 架构师 JVM内核调优学习总结

文章目录 jvm整体架构1.java运行过程2.jvm模型 运行数据区1.程序计数器1.1 概述1.2 溢出异常1.3 案例 2.虚拟机栈2.1 概述2.2 溢出异常 3.本地方法栈3.1 概述3.2 溢出异常 4.堆4.1 概述4.2 jdk1.74.3 jdk1.84.4 溢出异常 5.方法区5.1 概述5.2 溢出异常5.3 案例:1.6/…

数学动点问题1

文章目录 讲解(1)(2)(3)(4) 讲解 (1) 将点 C ( 3 , 1 ) 代入直线 y − x b ,得 将点\ C(3,1)\ 代入直线\ y-xb\ ,得 将点 C(3,1)…

C++三大特性—多态 “虚函数与动态绑定”

面向对象程序设计的核心思想是数据抽象、继承、动态绑定。 通过使用数据对象,将类的接口与实现分离 使用继承,定义相似的类型并对其相似关系建模 使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象 …

Linux Audio (6) DAPM-3 damp的kcontrol注册过程

DAPM-3 damp的kcontrol注册过程 普通kcontrolDAMP kcontrol第一步 codec驱动add widget第二步 Mechine驱动add kcontrol damp的注册过程 普通kcontrol 定义: static const struct snd_kcontrol_new wm8960_snd_controls[] { SOC_DOUBLE_R_TLV("Capture Volu…