递归找到多级文件夹中所有pdf文件的py程序
因个人需要,写了一个可以递归找到多级文件夹中所有pdf的小程序,发布出来供有需要的人参考或使用。
主要的代码逻辑就是这样的,后来我又做了一个ui界面。
import os
import re
import shutil
from os.path import isdir listnum = 0 #计数器
def get_items(path, direct_file, level=0,subindex=''):
'''
:param path: 文件路径,输入要处理的文件夹
:param direct_file: 用于把找到的文件存起来的路径
:param level: 递归层级
:param subindex: 序号
:return: 该文件自己的编号
'''
global listnum
dirs = os.listdir(path) #获取所有的子文件夹和子文件
subpath = [os.path.join(path, dir) for dir in dirs] #得到所有的地址
if level==0 and os.path.exists(direct_file):#把我们要搜索的目录中去掉用来存放目标文件的文件夹
subpath.remove(os.path.abspath(direct_file)) for index,each_item in enumerate(subpath):
if isdir(each_item):#是文件夹就继续调用原函数迭代
get_items(each_item,direct_file=direct_file, level=level+1,subindex = subindex+str(index)+'.') else:
basename = os.path.basename(each_item)#文件的名字
if re.match(r'^\w+(\.pdf)$',basename) is not None:
# 匹配以 .pdf结尾的所有文件
newname = str(listnum)+'_'+basename
# newname = basename
# 重命名可以重写
direct_file_name = os.path.join(direct_file,newname)
if not os.path.exists(direct_file_name):
print('正在复制%s到%s文件夹中.....'%(basename,direct_file))
shutil.copyfile(each_item,direct_file_name)
else:
print('%s已存在,已经跳过...'% newname)
pass
listnum+=1 if __name__ == '__main__':
'''
'''
path = os.getcwd()
direct_file = './课件/'
if not os.path.exists(direct_file):
os.mkdir(direct_file)
get_items(path, direct_file)
递归找到多级文件夹中所有pdf文件的py程序的更多相关文章
- C++读取文件夹中所有的文件或者是特定后缀的文件
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
- 基于Python——实现解压文件夹中的.zip文件
[背景]当一个文件夹里存好好多.zip文件需要解压时,手动一个个解压再给文件重命名是一件很麻烦的事情,基于此,今天介绍一种使用python实现批量解压文件夹中的压缩文件并给文件重命名的方法—— [代码 ...
- Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- php遍历文件夹中所有的文件
遍历文件夹中的所有文件 思路:1.定义一个函数,把给定的文件夹当前目录遍历输出(用到的文件操作函数scandir():一次性读取当前文件夹所有的内容并以数组的形式返回.). 2.如果是文件夹则红色字体 ...
- PHP遍历、删除文件夹中的所有文件
<?php header("Content-type:text/html;charset=utf-8"); /** * getDirFile 遍历文件夹中的所有文件 * @p ...
- C#遍历指定文件夹中的所有文件(转)
原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryI ...
- C#遍历指定文件夹中的所有文件(转)
C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryIn ...
- 在linux和Mac中访问某个文件夹中所有的文件
在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
随机推荐
- hbuilder/hbuilderx 无法检测到模拟器
常用模拟器的端口 夜神模拟器 端口号 :62001 海马玩模拟器 端口号:26944 网易mumu模拟器端口号:7555 天天模拟器 端口号:6555 AndroidStudio自带模拟器 端口号: ...
- 备战“金九银十”10道String高频面试题解析
前言 String 是我们实际开发中使用频率非常高的类,Java 可以通过 String 类来创建和操作字符串,使用频率越高的类,我们就越容易忽视它,因为见的多所以熟悉,因为熟悉所以认为它很简单,其实 ...
- Linux系统入门简介<1>
linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...
- DataSet、DataTable、DataView三者关系及DataView 常见用法
DATASET 可以理解为是个数据库. DATATABLE 可以理解为是个数据表. DATAVIEW 可以理解为是表的视图. dataset 数据集合可以包含多个datatable,而dat ...
- 权值初始化 - Xavier和MSRA方法
设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...
- 分布式事务之解决方案(TCC)
4. 分布式事务解决方案之TCC 4.1. 什么是TCC事务 TCC是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作 :预处理Try.确认Confirm.撤销C ...
- Linux是如何启动的?
参考资料: An introduction to the Linux boot and startup processes 这篇随笔,可以理解为是对这篇英文文章的翻译与个人理解.笔记的整合. 扩展阅读 ...
- Ubuntu1804中重新认识docker
这又是一篇充数的笔记……之前在Ubuntu中折腾过好几次了,但是关于他俩之间的故事总是参杂着第三者,不太纯粹,这一次只说她两之间的故事. 上一篇笔记弄好了Ubuntu环境.之后就是准备迎娶docker ...
- Pikachu-环境搭建
1.首先进行基础环境——本地服务器搭建. 这里使用xampp实现. 首先安装软件 配置apache 启动xampp以搭建本地服务器 2.安装Pikachu 配置xampp数据库信息 打开config. ...
- ConcurrentHashMap(1.7)分析
1. 先来了解ConcurrentHashMap中的几个成员,当然大多数与HashMap中的相似,我们只看独有的成员 /** * The default concurrency level for ...