拷贝制定文件下下的所有文件夹和文件到指定目录,并修改指定文件名字

import os
import shutil

sourcedir="/Users/w/Desktop/雅石/py去掉修改文件名字重新保存/原文件夹"#原始文件夹
targetdir="/Users/w/Desktop/雅石/py去掉修改文件名字重新保存/目标文件夹"#目标文件夹

def str_change(str):
    if not "_bin" in str:
        return str
    else:
        aa, bb = str.split("_bin")
        return (aa+bb)

def fun_copy(sourcedir,targetdir):#拷贝方法 把原始文件夹的所有文件夹和文件 按照同样的名字拷贝到目标文件夹中
    # 遍历filepath下所有文件,包括子目录
    files = os.listdir(sourcedir)
    for fi in files:  # fi 是目录下的文件或者文件夹
        fi_d = os.path.join(sourcedir, fi)  # 字符串拼接
        fi_new=os.path.join(targetdir, fi)  #目标文件也要改变
        if os.path.isdir(fi_d):  # 如果文件是文件夹
            if not os.path.exists(fi_new):#如果没新建过 新建同名目标文件夹
                os.makedirs(fi_new)
            #os.makedirs(fi_new)
            fun_copy(fi_d,fi_new)#递归循环下一个目录 复制目录里面的内容
        else:  # 不是文件夹是 文件 判断字符串是否有_bin 粘贴到指定位置 并且修改名字
            #print(os.path.join(sourcedir, fi_d))  # 不是文件夹是 文件
            #print(os.path.join(targetdir, fi_new))
            oldname=fi_d
            #newname=fi_new
            newname = str_change(fi_new)
            print(oldname)
            print(newname)
            if not os.path.exists(newname):#如果文件不存在 存在了就不再拷贝了
                shutil.copyfile(oldname, newname)


if __name__=="__main__":
    fun_copy(sourcedir,targetdir)

猜你喜欢

转载自blog.csdn.net/BJUT_bluecat/article/details/85257604
今日推荐