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 获取进程pid号的方法
Mar 10 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
利用python list完成最简单的DB连接池方法
Aug 09 Python
Python实现微信翻译机器人的方法
Aug 13 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 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的dl函数用法实例
2014/11/06 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
PHP面试题及答案二
2015/05/23 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
php png失真的原因及解决办法
2021/10/24 PHP