侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 7年前   234

引言

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

需求分解:

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

excel内容: 


处理前: 

 

处理后: 


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

环境:Python3.6+macOS10.12.5

代码

# -*- coding: utf-8 -*-import osimport shutilimport xlrdimport 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 Falsedef 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 osimport shutilos.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的几种方式Cxlrd、xlwt、openpyxl(部分函数不适用于python3,如column_values改为col_values)
  • Python中zip()函数用法举例
  • python脚本初体验之一键移动自定格式文件
  • 每天一个python模块之文件目录操作-os以及shutil模块

总结

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


  • 上一条:
    python中matplotlib条件背景颜色的实现
    下一条:
    Python流程控制 if else实现解析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客