Python自动化办公,深度优先搜索文件夹并移动全部doc文件

深度优先搜索(Depth-First Search,DFS)

温馨提示:最好有数据结构那本书的基础知识,如果没有就直接看接地气的人话,也能懂

概念:是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
深度优先搜索-例图

节点:可以理解为分支

人话:如图所示,深度搜索的方式就是从根节点①开始搜索,先遍历②,查找②的下一个节点(⑤、⑥、⑦),因为⑤、⑥都没有下一个节点了,⑦搜索到有分支(⑩、⑪),由于访问完11没有节点,返回⑦又返回②,继续返回①然后同样的方法访问③和剩下的节点,直到全部访问完毕

顺序:①→②→⑤→⑥→⑦→⑩→⑪→③→④→⑧→⑨(结束)

这个过程就叫深度优先搜索,此时我们可以套在文件夹内,如图黄色代表文件夹,蓝色代表.doc文档文件的话那么就是这样

【自动化要求-题目/实操】

输入你需要查找到目录和输出存放文件的目录,假设存放的文件为.docx文档文件,那么将你输入需要查找的目录下所有的docx文件都转移到你的存放目录(移动所有文件)

import os #导入系统库os
import shutil #实现移动文件的功能需要

#path代表待搜索的目录路径,result存储搜索到的文件路径列表
##函数将path目录中的全部子目录和文件找到保存至result
def search_dir(path, result):
    #使用os中的listdir得到path下的目录和文件,保存到child_files
    child_files = os.listdir(path)
    for child in child_files:#遍历child_files
        #通过join函数拼接子目录或文件的路径,存储至child
        child = os.path.join(path,child)
        #将child保存至result
        result.append(child)    #append方法用于在列表的末尾添加新的元素
        if os.path.isdir(child):#如果child是一个子目录
            search_dir(child, result)#调用search_dir继续递归搜索child(继续调用自己)

#输入搜索目录和docx文件保存的目录
input_dir = input("输入待搜索的目录:")
output_dir = input("输入保存文件的目录:")

#设置保存子目录与文件路径的列表files
files= list()

#将input_dir中的全部子目录和文件路径找到并保存到files
search_dir(input_dir, files)

for file in files: #遍历files
    print("find %s"%(file)) #打印搜索到的路径
    #如果该路径是一个docx文件
    if os.path.isfile(file) and file.endswith('.docx'):
        print("move %s"%(file)) #打印提示信息
        shutil.move(file, output_dir) #将文件移动到output_dir

在控制台部分 :

我输入的搜索目录是【D\1】

输出目录是【D\1\整合】

 

程序运行结果

运行结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值