Python3批量移动指定文件到指定文件夹方法示例


Posted in Python onSeptember 02, 2019

引言

某人需求:以某excel中姓名信息为名建立一系列文件夹,分别将四个文件夹中与人名对应的文件汇总到该人名对应的文件夹中,共近200人,手工处理费时费力。

需求分解:

从excel中提取代号index和姓名信息name
以index_name格式批量建立文件夹namefolder
分别遍历四个文件夹及其子文件夹,将其中“文件名filename中包含姓名name”的文档移动到该人对应的新建的文件夹namefolder中

excel内容: 

Python3批量移动指定文件到指定文件夹方法示例

处理前: 

Python3批量移动指定文件到指定文件夹方法示例 

处理后: 

Python3批量移动指定文件到指定文件夹方法示例

功能实现比较容易,权当记录。

环境:Python3.6+macOS10.12.5

代码

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

import os
import shutil
import xlrd
import string

### 创建多层目录
def mkdirs(path):
 # 去除首位空格
 path = path.strip()
 # 去除尾部 \ 符号
 path = path.rstrip("\\")

 # 判断路径是否存在
 # 存在  True
 # 不存在 False
 isExists = os.path.exists(path)

 # 判断结果
 if not isExists:
  # 创建目录操作函数
  os.makedirs(path)
  # 如果不存在则创建目录
  print(path + ' 创建成功')
  return True
 else:
  # 如果目录存在则不创建,并提示目录已存在
  print(path + ' 目录已存在')
  return False

def search_file(path, filename, newpath):
 queue = []
 queue.append(path);
 while len(queue) > 0:
  tmp = queue.pop(0)
  if (os.path.isdir(tmp)):#如果该路径是文件夹
   for item in os.listdir(tmp):#遍历该路径中文件和文件夹
    queue.append(os.path.join(tmp, item))#将所得路径加入队列queue
  elif (os.path.isfile(tmp)):#如果该路径是文件
   name = os.path.basename(tmp) # 获取文件名
   dirname = os.path.dirname(tmp) # 获取文件目录
   full_path = os.path.join(dirname, name) # 将文件名与文件目录连接起来,形成完整路径
   des_path = newpath+'/'+path+'_'+name #目标路径,将该文件夹信息添加进最后的文件名中
   if filename in name:#匹配符合条件的文件,也可用if(name.find(filename)!=-1):
    shutil.move(full_path, des_path)#移动文件到目标路径(移动+重命名)

if __name__ == '__main__':
 #打开excel文件
 data=xlrd.open_workbook('名单.xlsx')
 #获取第一张工作表(通过索引的方式)
 table=data.sheet_by_index(0)
 #datalist用来存放数据
 datalist_UNIQID=[]
 datalist_NAME=[]
 #将table中第一行的数据读取并添加到data_list中
 datalist_UNIQID.extend(table.col_values(0))
 datalist_NAME.extend(table.col_values(2))
 #foldname = [a+'_'+b for a, b in zip(datalist_UNIQID,datalist_NAME)]
 dir_tjbg='zzz报告'
 dir_fsgz='xxx证书'
 dir_hbpx='yyy证书'
 dir_ykfs='xyz证书'
 #打印出第一行的全部数据
 for index, name in zip(datalist_UNIQID, datalist_NAME):
  foldername=index+'_'+name.strip()
  #print(foldername)
  mkdirs(foldername)
  search_file(dir_tjbg,name.strip(),foldername)
  search_file(dir_fsgz,name.strip(),foldername)
  search_file(dir_hbpx,name.strip(),foldername)
  search_file(dir_ykfs,name.strip(),foldername)

备忘

1. 同步遍历两个list

l1 = [2,2,2,2]
l2 = [3,3,3,3]
prod = [a*b for a, b in zip(l1,l2)]
print prod
# [6, 6, 6, 6]
add = [a+b for a, b in zip(l1,l2)]
print add
# [5, 5, 5, 5]

2. 文件夹操作

import os
import shutil

os.getcwd() # 获取当前工作目录,非脚本目录
os.listdir() # 返回指定目录下的所有文件和目录,非递归
os.remove() # 删除文件
os.removedirs() #删除目录
os.path.isfile() # 检验给出的路径是否是一个文件
os.path.isdir() # 检验给出的路径是否是一个目录
os.path.isabs() # 判断是否是绝对路径
os.path.exists() # 检验给出的路径是否真实存在
os.path.split() # 返回一个路径的目录名和文件名
os.path.splitext() # 分离文件扩展名
os.path.dirname() # 获取文件路径名
os.path.basename() # 获取一个绝对路径下的文件名
os.system() # 运行shell命令
os.rename(old,new) # 重命名文件或目录
os.makedirs(r"c:\python\test") # 创建多级目录
os.mkdir("test") # 创建单个目录
os.exit() # 终止当前进程
os.path.getsize(filename) # 获取文件大小
os.mknod("test.txt") # 创建空文件

shutil.copyfile("oldfile","newfile") # oldfile和newfile都只能是文件
shutil.copytree("olddir","newdir") # olddir和newdir都只能是目录,且newdir必须不存在
shutil.move("oldpos","newpos") # 移动文件或目录
shutil.rmtree("dir") # 删除目录,与os.removedirs()相同
os.path.join(“home”, "me", "mywork") # 路径连接

参考

  • Python3 操作Excel文件(读写)
  • Python操作excel的几种方式?xlrd、xlwt、openpyxl(部分函数不适用于python3,如column_values改为col_values)
  • Python中zip()函数用法举例
  • python脚本初体验之一键移动自定格式文件
  • 每天一个python模块之文件目录操作-os以及shutil模块

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
深入解析Python中的线程同步方法
Jun 14 Python
开源Web应用框架Django图文教程
Mar 09 Python
浅谈django orm 优化
Aug 18 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
详解Python 最短匹配模式
Jul 29 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
Python流程控制 if else实现解析
Sep 02 #Python
Python 变量的创建过程详解
Sep 02 #Python
python脚本之一键移动自定格式文件方法实例
Sep 02 #Python
Python中zip()函数的简单用法举例
Sep 02 #Python
Python在OpenCV里实现极坐标变换功能
Sep 02 #Python
Python 读取用户指令和格式化打印实现解析
Sep 02 #Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 #Python
You might like
用PHP实现维护文件代码
2007/06/14 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
Python第三方库的安装方法总结
2016/06/06 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
python文件及目录操作代码汇总
2020/07/08 Python
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
委托证明的格式
2014/01/10 职场文书
单位消防安全制度
2014/01/12 职场文书
年会主持词结束语
2014/03/27 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
2016高考寄语集锦
2015/12/04 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python