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 测试实现方法
Dec 24 Python
举例介绍Python中的25个隐藏特性
Mar 30 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
Python中线程编程之threading模块的使用详解
Jun 23 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
python中的变量如何开辟内存
Jun 26 Python
python中的tcp示例详解
Dec 09 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
对django layer弹窗组件的使用详解
Aug 31 Python
python保留小数位的三种实现方法
Jan 07 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 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项目开发中用到的快速排序算法分析
2016/06/25 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
javascript动态加载二
2012/08/22 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python爬虫实例详解
2018/06/19 Python
python算法题 链表反转详解
2019/07/02 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Python bytes string相互转换过程解析
2020/03/05 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
幼教求职信
2014/03/12 职场文书
无房证明范本
2014/09/17 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python