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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
python迭代器与生成器详解
Mar 10 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
django富文本编辑器的实现示例
Apr 10 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
Selenium 安装和简单使用的实现
Dec 04 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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 extension 加载顺序问题
2019/08/16 PHP
基于JQuery的cookie插件
2010/04/07 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
Python学生成绩管理系统简洁版
2020/04/05 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python configparser模块操作代码实例
2020/06/08 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python不同版本的_new_不同点总结
2020/12/09 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
服装厂厂长职责
2013/12/16 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
教师产假请假条
2014/04/10 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
军训结束新闻稿
2015/07/17 职场文书
交通安全教育心得体会
2016/01/15 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书