以下是一个简单的Python程序,用于自动备份指定位置文件,并按日期分类存储备份文件:

import os
import shutil
import time

# 指定要备份的文件夹路径
source_folder = '/path/to/source/folder'

# 指定备份位置的根路径
backup_root = '/path/to/backup/root'

# 生成备份文件夹名称,按照当前日期命名
backup_folder = time.strftime('%Y-%m-%d', time.localtime())

# 拼接备份文件夹路径
backup_path = os.path.join(backup_root, backup_folder)

# 如果备份文件夹不存在,则创建它
if not os.path.exists(backup_path):
    os.makedirs(backup_path)

# 备份文件夹和备份位置已准备好,开始备份
for root, dirs, files in os.walk(source_folder):
    for file in files:
        # 拼接源文件路径和目标文件路径
        source_path = os.path.join(root, file)
        backup_file = os.path.join(backup_path, file)

        # 如果目标文件已存在,则在文件名后面添加数字,避免覆盖原文件
        if os.path.exists(backup_file):
            i = 1
            while True:
                new_backup_file = os.path.join(
                    backup_path,
                    '{}_{}.{}'.format(os.path.splitext(file)[0], i, os.path.splitext(file)[1])
                )
                if not os.path.exists(new_backup_file):
                    backup_file = new_backup_file
                    break
                i += 1

        # 复制文件到备份位置
        shutil.copy2(source_path, backup_file)

print('备份完成:{}'.format(backup_path))

该程序首先指定了要备份的文件夹路径和备份位置的根路径,然后在程序中生成了备份文件夹名称,按照当前日期命名。接下来,程序使用了os.path.join()方法拼接出备份文件夹的完整路径,并检查该路径是否存在。如果备份文件夹不存在,则使用os.makedirs()方法创建它。

为了备份指定位置文件夹及其子文件夹中的所有文件,程序使用了os.walk()方法遍历源文件夹中的所有文件和子文件夹。对于每个文件,程序使用os.path.join()方法拼接出源文件路径和目标文件路径,并使用shutil.copy2()方法将文件复制到备份位置。如果目标文件已存在,则在文件名后面添加数字,以避免覆盖原文件。

最后,程序输出了备份完成的消息,包含备份文件夹的完整路径。

使用说明:

  1. 将代码保存为.py文件。
  2. 修改source_folderbackup_root变量的值,分别指定要备份的文件夹路径和备份位置的根路径。
  3. 运行代码,程序会自动备份指定文件夹及其子文件夹中的所有文件。

代码解释:

  • os.walk():用于遍历指定文件夹及其子文件夹中的所有文件和子文件夹。
  • os.path.join():用于拼接路径。
  • shutil.copy2():用于复制文件。
  • os.path.exists():用于判断文件或文件夹是否存在。
  • os.makedirs():用于创建文件夹。
  • time.strftime():用于获取当前日期并格式化为字符串。

注意事项:

  • 确保备份位置的根路径存在,并且具有写入权限。
  • 如果要备份大量文件,建议使用压缩工具,以减小备份文件的大小。
Python自动备份脚本:按日期分类备份指定文件夹及其子文件夹

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

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