前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python递归遍历文件夹搜索文件 脚本MagicSearch.py

Python递归遍历文件夹搜索文件 脚本MagicSearch.py

作者头像
拿我格子衫来
发布2022-01-24 10:33:12
1.3K0
发布2022-01-24 10:33:12
举报
文章被收录于专栏:TopFETopFE

开发背景:

电脑的E盘里有很多电子书,以前对那个技术比较感兴趣就去下载很多电子书,有些看了,有些没看,电子书没有在一个地方,于是我准备写一个脚本,将这些电子书搜索出来,进行整理一下。

程序设计的思路:

定义一个搜索的根目录baseDir,一个不搜索的文件夹列表notSearhFolderArr,一个搜索的文件类型列表searchTypeArr,

判断根目录baseDir是有效的,并且不存在于notSearhFolderArr数组中,

获取文件夹下的所有文件及文件夹,

遍历,判断子元素是文件,并且文件类型存在于searchTypeArr,如果真则存在返回路径

判断子元素,是文件夹并且不属于notSearhFolderArr数组中, 执行第一步,进行递归搜索

代码:

代码语言:javascript
复制
 # 根据配置好的文件,搜索文件夹
import os
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') # 处理vscode打印中文乱码问题
# 主函数
baseDir = "E:\\Pang\\for_search" # 搜索的根目录
notSearchFolderArr = ['node_modules'] # 不搜索的目录
searchFileTypeArr = ['.pdf','.PDF'] # 搜索的文件类型

def searhMain():
  allResArr = searchFolder(baseDir)
  print('\n'.join(allResArr))


# 搜索一个文件目录 传入一个文件目录路径
def searchFolder(folderPath):
  folderName = os.path.split(folderPath)[-1]
  searFilePathArr = []
  if os.path.exists(folderPath) and (folderName not in notSearchFolderArr): # 判断路径是有效文件夹
    fileArr = os.listdir(folderPath) # 获取文件夹下的所有内容(文件和文件夹)
    for item in fileArr:
      currentPath = folderPath+'\\'+item
      (fileName,fileType)  = os.path.splitext(item)
      if os.path.isfile(currentPath) and (fileType in searchFileTypeArr):  # 处理文件
        searFilePathArr.append(currentPath)

      if os.path.isdir(currentPath) and (item not in notSearchFolderArr): # 处理文件夹
        innerFileArr = searchFolder(currentPath) # 递归搜索
        searFilePathArr.extend(innerFileArr)

  return searFilePathArr



searhMain()

主要用到的模块和api:

模块 os: 操作文件的模块

主要api:

os.path.split : 分割路径 os.path.exists: 路径是否存在 os.listdir: 路径是否是文件夹 os.path.splitext:拆分路径中的文件扩展名于其他 os.path.isfile: 路径是否是文件 append: 向数组中追加一个元素 extend: 向数组追加一个数组

运行结果:

程序返回的事根目录下所有的pdf文件路径列表

这个脚本稍作修改就可以查询多个文件类型,对文件进行分类,获取要查询的文件路径后,还可以对文件进行批量备份到一个文件夹下,或者将搜索结果直接打包压缩。想怎么玩都可以。

学无止境

这个小脚本,花费了我三个小时,除了关键字外,所有的api都是我一次一次百度所得,包括那个换行符,没办法,python写的少,但我相信:

虽然我走的慢,但每一步都是在前进,并且永不止步

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发背景:
  • 程序设计的思路:
  • 代码:
  • 主要用到的模块和api:
  • 运行结果:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档