数据挖掘(四)基于python制作的批量移动文件小工具

本文介绍一个小编用python写的批量移动文件小工具,在工作中的确省下了许多力气。


一、背景

在工作中,有时候会面临这样的情况,一个目录下面有许多子文件夹,每个子文件夹中存放有各种文件。如下所示,
某个目录下的子文件夹
任意子文件中的内容

现在,要去所有的子文件中找出某种类型的文件,比如pdf,dat,txt等等。如果以手动复制粘贴的方式去移动文件,未免太笨拙了。因此,可以让脚本干这种脏活累活。


二、使用方式

接下来就介绍本文的工具的使用方式:

第一步

在这里插入图片描述
为了方便大家的使用,我将脚本包成了EXE文件,因此,即使不安装python环境同样可以使用。单击可执行文件,会弹出控制台对话框,如下,
在这里插入图片描述
让选择需要移动的文件的后缀名,以及是否将源文件删除,然后按回车键,

第二步

马上会弹出对话框,如下,
在这里插入图片描述

选择目录,程序会将该目录下的子文件夹中的目标文件全部进行移动。

第三步

进入前面对话框选择的目录,程序会在该目录下新建一个文件夹,如下所示,

在这里插入图片描述

进入该子文件,可以看到里面放置了我们移动过来的目标文件,
在这里插入图片描述


三、源代码展示

# -*- coding: utf-8 -*-


from tkinter import *
import tkinter.filedialog
import os,shutil
import glob




if __name__ == '__main__':
	
    suffix_name =  input("请输入一个文件后缀(包括但不限dat,csv,txt,pdf,asc等等):")   
    flag = input("移动过程中选择不删除源文件(Y 或者N):")  
    if flag =='N':
        flag = 0
    else:
         flag = 1
    
    root = Tk()           
    # 创建一个Tkinter.Tk()实例
    root.withdraw()       
    # 将Tkinter.Tk()实例隐藏
    root_dir = tkinter.filedialog.askdirectory(title=u'请选择文件夹' )  
    # 以对话框的形式选择文件,并返回其绝对路径
    #print(root_dir)
    root_name = os.path.split(root_dir)[1] +'('+suffix_name+')'
    
    savedir = os.path.join(root_dir,root_name)
    # 创建存储文件的文件夹
    if not os.path.exists(savedir):
        os.mkdir(savedir)
            
    for folderName, subfolders, filenames in os.walk(root_dir):  
    # 这个是文件和文件夹所在目录
        #print(subfolders)
        for subfolder in subfolders:
            sub_root_dir = os.path.join(root_dir,subfolder)
            # 进入每一个子文件夹
#            print(subfolder) 
#            print(sub_root_dir)
            for old_file_path in glob.glob(os.path.join(sub_root_dir, '*.' + suffix_name)):
                print(old_file_path)
                file_name = os.path.split(old_file_path)[1]
                new_file_path = os.path.join(savedir,file_name)
                try:
                    if flag:
                        shutil.copyfile(old_file_path, new_file_path)
                        #移动文件到目标路径(移动+重命名,但不删除源文件)
                    else:
                         shutil.move(old_file_path, new_file_path)
                        #移动文件到目标路径(移动+重命名,但删除源文件)
                except OSError or IOError:
                    pass
    print('移动文件完成!')                    
       

OK,就这些。


详细的exe、源代码、程序解析等文件请关注公众号,
回复关键词 移动文件小工具 获取。
更多精彩内容请关注公众号 行歌课堂
转载请注明出处

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页