参考博客
https://blog.csdn.net/itfans123/article/details/133710731
案例1
import os
import shutil
def copy_folder(source_folder, destination_folder):
# 创建目标文件夹
os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
source_item = os.path.join(source_folder, item)
destination_item = os.path.join(destination_folder, item)
# 判断是否为文件夹
if os.path.isdir(source_item):
# 递归复制子文件夹
copy_folder(source_item, destination_item)
else:
# 复制文件
shutil.copy2(source_item, destination_item)
print("所有文件复制完成")
# 示例用法
copy_folder("./问价1/","./file/")
这里的例子相当于重新复制一份文件夹问价1,然后重新命名为file。注意里面的内容也被复制
案例2
import os
import shutil
def copy_folder(source_folder, destination_folder):
创建目标文件夹
os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
source_item = os.path.join(source_folder, item)
destination_item = os.path.join(destination_folder, item)
# 判断是否为文件夹
if os.path.isdir(source_item):
# 递归复制子文件夹
copy_folder(source_item, destination_item)
else:
# 复制文件
shutil.copy2(source_item, destination_item)
print("所有文件复制完成")
示例用法
import os
import shutil
def copy_folder(source_folder, destination_folder):
# 创建目标文件夹
os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
source_item = os.path.join(source_folder, item)
destination_item = os.path.join(destination_folder, item)
# 判断是否为文件夹
if os.path.isdir(source_item):
# 递归复制子文件夹
copy_folder(source_item, destination_item)
else:
# 复制文件
shutil.copy2(source_item, destination_item)
print("所有文件复制完成")
# 示例用法
copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")
#copy_folder(x,x.replace("/Users/alex/Desktop/htdocs/hj/plugins", "/Users/alex/Desktop/htdocs/hj/web/plugins"))
注意这个路径,原先的路径为
当复制完,file里面的结果变成
案例3)(显示复制路径)
import os
import shutil
def copy_folder(source_folder, destination_folder):
# 创建目标文件夹
os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
source_item = os.path.join(source_folder, item)
destination_item = os.path.join(destination_folder, item)
# 判断是否为文件夹
if os.path.isdir(source_item):
# 递归复制子文件夹
copy_folder(source_item, destination_item)
else:
# 复制文件
shutil.copy2(source_item, destination_item)
print("{}-->复制-->{}完成!!!".format(source_item,destination_item))
# 示例用法
copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")
加条件的复制
import os
import shutil
def copy_folder(source_folder, destination_folder):
# 创建目标文件夹
#print(destination_folder)
os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
source_item = os.path.join(source_folder, item)
destination_item = os.path.join(destination_folder, item)
# 判断是否为文件夹
if os.path.isdir(source_item):
# 递归复制子文件夹
copy_folder(source_item, destination_item)
else:
# 复制文件
parent_dir = os.path.dirname(source_item)
_, last_parent_folder = os.path.split(parent_dir)
if ('t1' in last_parent_folder) or ('T1' in last_parent_folder):
shutil.copy2(source_item, destination_item)
print("{}-->复制-->{}完成!!!".format(source_item,destination_item))
# 示例用法
copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")
# 这种做法有一个问题,就是会新建T2的文件夹
结果如下
注意这个结果是有一点毛病,就是不符合条件的文件夹仍然会被复制,只不过是空文件夹