Python实现文件批量复制 + 重命名的demo

同事要把一个文件夹的所有内容复制到新的文件夹中,用Python简单实现了。

1. 先复制(shutil库)

    src = 原目录, dst = 新的目录,根据自己需求更改。shutil.copytree()

import shutil
import os

#dst目录必须不存在才可以运行,如果存在可以再改个名字,全部复制之后再新建

src = "E:\\test"
dst = "E:\\testc"

os.chdir("E:\\")
shutil.copytree(src, dst)

2.批量重命名。用到re。

    新文件名根据自己需求改动。

import os
import re

path = r"E:\test"

fl = os.listdir(path)
print(fl)

for i in fl:
    oldname = os.path.join(path, i)
    new_name = re.sub("\d+", "", i)
    newname = os.path.join(path, new_name)
    os.rename(oldname, newname)

print("DONE")

3.最终将上面两步合并,一步到位。复制 + 重命名

import shutil
import os
import re
#cmd命令下直接输入 python 这个文件的路径\core.py  回车即可运行
#先复制所有src的所有文件,下一步批量修改复制后的文件名
#本程序是替换掉文件名中的所有数字

src = "E:\\test"       #src是你想复制的源文件的目录
dst = "E:\\testc"      #dst目录必须不存在才可以运行,如果存在可以先改个名字,结束之后再复制过去

#以下是copy步骤
os.chdir("E:\\")
print("开始copy")
shutil.copytree(src,dst)
print("copy成功")

#以下是rename步骤
fl = os.listdir(dst)    #遍历dst目录下所有文件
print(fl)       #这里是为了打印出所有的文件名,下面的f2也是此作用
print("开始rename")

for i in fl:
    oldname = os.path.join(dst, i)       #一定要有os.path.join方法,将路径也要加入到str中
    new_name = re.sub("\d+$", "", i)     #这里\d+是正则表达式中的匹配方法,将数字替换为空
    newname = os.path.join(dst, new_name)   #oldname和newname都必须是完整的路径
    os.rename(oldname, newname)
f2 = os.listdir(dst)                        #再次遍历目录,打印出更改后的所有文件名
print(f2)
print("rename成功")

 

你可能感兴趣的:(Python)