递归找到多级文件夹中所有pdf文件的py程序
2024-08-28 21:14:00
因个人需要,写了一个可以递归找到多级文件夹中所有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)
最新文章
- Building a RESTful Web Service
- 提取hdfs文件名的方法
- 用gameMaker做个小游戏
- <;dependency>;spring-webmvc<;/dependency>;
- Java敏捷数据库迁移框架&mdash;&mdash;Flyway
- C语言知识整理(2):volatile与register
- Objective-c——UI基础开发第七天(自定义UITableView)
- platform设备驱动全透析
- Xcode 合并分支报错
- vm安装不上vmtools
- phpcms自定义分页
- UBER司机奖励政策
- jenkins持续集成简介[一]
- FPGA笔试必会知识点1--数字电路基本知识
- 图解JAVA参数传递
- eclipse解决js提示
- Java正则表达式API详解
- linux4.10.8 内核移植(三)---裁剪内核
- Python 函数装饰器
- :观察者模式--Weather