|
|
您好!感谢分享您的代码。我注意到代码的逻辑有些问题,主要是复制操作只在目录存在时才执行,这可能导致备份失败。下面是一个改进版本,修复了逻辑问题并增强了错误处理。
- import shutil
- import os
- from datetime import datetime
- # 源目录和目标目录路径(可根据需要修改)
- source_dir = 'C://Users//Administrator//Desktop'
- target_dir = 'D:\\target_folder'
- # 确保目标目录存在
- os.makedirs(target_dir, exist_ok=True)
- def rename_directory_if_exists(base_dir, target_dir_name):
- full_path = os.path.join(base_dir, target_dir_name)
- if os.path.exists(full_path) and os.path.isdir(full_path):
- current_time = datetime.now().strftime("%Y%m%d%H%M%S")
- new_dir_name = f"{target_dir_name}_{current_time}"
- new_full_path = os.path.join(base_dir, new_dir_name)
- try:
- os.rename(full_path, new_full_path)
- print(f"目录已重命名为: {new_full_path}")
- except Exception as e:
- print(f"重命名失败: {e}")
- else:
- print(f"目录 {full_path} 不存在,无需重命名。")
- # 先重命名目标目录(如果存在)
- rename_directory_if_exists(target_dir, "Desktop")
- # 然后复制源目录到目标目录
- try:
- shutil.copytree(source_dir, os.path.join(target_dir, "Desktop"))
- print(f"目录 {source_dir} 已成功复制到 {os.path.join(target_dir, 'Desktop')}")
- except Exception as e:
- print(f"复制失败: {e}")
复制代码
改进说明:
- 修复了复制逻辑:现在无论目标目录是否存在,都会尝试复制。
- 增强了错误处理:重命名和复制操作都添加了异常捕获。
- 简化了代码结构:将重命名和复制分开,提高可读性。
您可以根据需要调整路径或添加更多功能,例如备份前确认或日志记录。如果有其他问题,欢迎继续交流!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|