修改后的代码:

import os import shutil

path1 = '/path/to/source/folder' path3 = '/path/to/destination/folder'

for file in os.listdir(path3): if file.endswith('.xlsm'): folder_name = os.path.splitext(file)[0] # 文件夹名称为去除后缀名的文件名 found_folder = False prev_folder_path = None for root, dirs, files in os.walk(path3): if found_folder: break # 如果已经找到同名文件夹,则退出循环 if folder_name in dirs: src_folder = os.path.join(root, folder_name) if 'Copy of ' in os.path.basename(src_folder): continue # 如果找到的是复制的文件夹,则跳过 if found_folder and src_folder != prev_folder_path: continue # 如果已经找到同名文件夹,但路径与之前不同,则跳过 rel_path = os.path.relpath(src_folder, path3) dest_folder = os.path.join(path3, rel_path) if not os.path.exists(dest_folder): os.makedirs(dest_folder) file_path = os.path.join(root, file) shutil.copy(file_path, dest_folder) found_folder = True prev_folder_path = src_folder if not found_folder: found_file = False filenames = [os.path.splitext(f)[0] for f in os.listdir(path1)] # 获取 path1 中所有文件的名称(不含后缀) if folder_name in filenames: src_folder = os.path.join(path1, folder_name) if 'Copy of ' in os.path.basename(src_folder): continue # 如果找到的是复制的文件夹,则跳过 if found_folder and src_folder != prev_folder_path: continue # 如果已经找到同名文件夹,但路径与之前不同,则跳过 found_file = True rel_path = os.path.relpath(src_folder, path1) # 获取 src_folder 与 path1 的相对路径 dest_folder = os.path.join(path3, rel_path) # 在 path3 下创建同样的子目录 if not os.path.exists(dest_folder): os.makedirs(dest_folder) file_path = os.path.join(path3, file) shutil.copy(file_path, dest_folder) prev_folder_path = src_folder if not found_file: dest_folder = os.path.join(path3, "没找到对应的文件路径") if not os.path.exists(dest_folder): os.makedirs(dest_folder) file_path = os.path.join(path3, file) shutil.copy(file_path, dest_folder

检查以下代码是否有错误如果有请修改:for file in oslistdirpath3 if fileendswithxlsm folder_name = file-5 # 文件夹名称为去除后缀名的文件名 found_folder = False for root dirs files in oswalkpath3 if f

原文地址: http://www.cveoy.top/t/topic/de42 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录