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中使用PDB库调试程序
Apr 05 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
Python字符串中查找子串小技巧
Apr 10 Python
python处理大数字的方法
May 27 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python列表list排列组合操作示例
Dec 18 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
python 带时区的日期格式化操作
Oct 23 Python
Django多个app urls配置代码实例
Nov 26 Python
pytorch中的numel函数用法说明
May 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数组合并的二种方法
2014/03/21 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
python写入xml文件的方法
2015/05/08 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
对于Python中RawString的理解介绍
2016/07/07 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
python如何读写json数据
2018/03/21 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python实现PCA降维的示例详解
2020/02/24 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
2014年店长工作总结
2014/11/17 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫