参考博客
https://blog.csdn.net/itfans123/article/details/133710731
案例1
import os
import shutildef 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 shutildef 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 shutildef 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 shutildef 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的文件夹
结果如下
注意这个结果是有一点毛病,就是不符合条件的文件夹仍然会被复制,只不过是空文件夹
但是现在我经过测试发现一个问题,就是我在jupyter中,复制文件会出错
但是我在terminal中使用nohup进行运行就不报错,但不使用nohup就会报错
应该使用nohup命令
nohup python -u copyfile.py > log.txt 2>&1 &