使用Python3怎么移动指定文件

使用Python3怎么移动指定文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

需求分解:

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

excel内容:

使用Python3怎么移动指定文件

处理前:

使用Python3怎么移动指定文件

处理后:

使用Python3怎么移动指定文件

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

环境:Python3.6+macOS10.12.5

代码

#-*-coding:utf-8-*-

importos
importshutil
importxlrd
importstring

###创建多层目录
defmkdirs(path):
#去除首位空格
path=path.strip()
#去除尾部\符号
path=path.rstrip("\\")

#判断路径是否存在
#存在True
#不存在False
isExists=os.path.exists(path)

#判断结果
ifnotisExists:
#创建目录操作函数
os.makedirs(path)
#如果不存在则创建目录
print(path+'创建成功')
returnTrue
else:
#如果目录存在则不创建,并提示目录已存在
print(path+'目录已存在')
returnFalse

defsearch_file(path,filename,newpath):
queue=[]
queue.append(path);
whilelen(queue)>0:
tmp=queue.pop(0)
if(os.path.isdir(tmp)):#如果该路径是文件夹
foriteminos.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#目标路径,将该文件夹信息添加进最后的文件名中
iffilenameinname:#匹配符合条件的文件,也可用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+'_'+bfora,binzip(datalist_UNIQID,datalist_NAME)]
dir_tjbg='zzz报告'
dir_fsgz='xxx证书'
dir_hbpx='yyy证书'
dir_ykfs='xyz证书'
#打印出第一行的全部数据
forindex,nameinzip(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*bfora,binzip(l1,l2)]
printprod
#[6,6,6,6]
add=[a+bfora,binzip(l1,l2)]
printadd
#[5,5,5,5]

2. 文件夹操作

importos
importshutil

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怎么移动指定文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。

发布于 2021-04-15 01:55:30
收藏
分享
海报
0 条评论
167
上一篇:使用php怎么实现函数式编程 下一篇:使用JavaScript怎么在for循环中跳过undefined值
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码