因个人需要,写了一个可以递归找到多级文件夹中所有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程序的更多相关文章

  1. C++读取文件夹中所有的文件或者是特定后缀的文件

    由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...

  2. 基于Python——实现解压文件夹中的.zip文件

    [背景]当一个文件夹里存好好多.zip文件需要解压时,手动一个个解压再给文件重命名是一件很麻烦的事情,基于此,今天介绍一种使用python实现批量解压文件夹中的压缩文件并给文件重命名的方法—— [代码 ...

  3. Java以流的方式将指定文件夹里的.txt文件全部复制到另一文件夹,并删除原文件夹中所有.txt文件

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  4. php遍历文件夹中所有的文件

    遍历文件夹中的所有文件 思路:1.定义一个函数,把给定的文件夹当前目录遍历输出(用到的文件操作函数scandir():一次性读取当前文件夹所有的内容并以数组的形式返回.). 2.如果是文件夹则红色字体 ...

  5. PHP遍历、删除文件夹中的所有文件

    <?php header("Content-type:text/html;charset=utf-8"); /** * getDirFile 遍历文件夹中的所有文件 * @p ...

  6. C#遍历指定文件夹中的所有文件(转)

    原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryI ...

  7. C#遍历指定文件夹中的所有文件(转)

    C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryIn ...

  8. 在linux和Mac中访问某个文件夹中所有的文件

    在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...

  9. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

随机推荐

  1. Java读取Properties文件 Java加载配置Properties文件

    static{ Properties prop = new Properties(); prop.load(Thread.currentThread().getContextClassLoader() ...

  2. Linux查看文本的第20~30行

    一.模拟环境 [root@WT ~]# seq >/data/test.txt [root@WT ~]# xargs -n </data/test.txt 二.实现命令 方法一(head+ ...

  3. final关键字、finally代码块和finalize()方法有什么区别?

    1. final是关键字,final可以修饰类.方法.属性. 如果一个类被final修饰,那么这个类就是最终类,不能派生出新的子类,不能作为父类被继承,该类中的所有方法都不能被重写,但是final类中 ...

  4. c#截取后台窗口的图片

    c#截取后台窗口的图片,自测可用,据说性能很一般,用用吧 struct RECT { public int Left; // x position of upper-left corner publi ...

  5. 记mysql条件分支语句CASE WHEN THEN ELSE END的使用

    记一次基于mysql数据库查询时条件分支语句使用 表达式格式:CASE column WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 .... ELSE 表达式 END [ ...

  6. tomcat启动内存溢出三种解决方案:java.lang.OutOfMemoryError:PermGen space解决办法

    问题: 严重: Error waiting for multi-thread deployment of WAR files to completejava.util.concurrent.Execu ...

  7. 记录一次创建.net core 项目 并且发布到docekr【完全新手入门】

    1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker:  Docker for Windows  2]创建.net core项目并且发布 2.0先打开并且运行 ...

  8. Linux下快速手动产生core文件

    原文链接:https://blog.csdn.net/jctian000/article/details/79695006 当我们配置好自动生成core文件的环境后,若不想写导致崩溃的程序验证,那要怎 ...

  9. (办公)记事本_Linux帮助命令

    参考:http://www.gulixueyuan.com/course/300/task/7086/show# 帮助命令: .man命令 1.1.man命令是Linux下的帮助指令,通过man指令可 ...

  10. Windows下安装和破解redis desktopmanager 2019.4

    redis可视化客户端工具:redis desktop manager 破解版链接:https://www.52pojie.cn/thread-1042770-1-1.html redis deskt ...