Python 备份程序代码实现是一个非常常见的需求。例如,在为自己的电脑或服务器备份数据时,通过编写 Python 代码可以快速实现这一功能。以下是我们提供的 Python 备份程序的攻略:
确定备份源和目标
在开始编写 Python 备份程序之前,我们需要明确备份的源和目标。源包含需要备份的文件或文件夹路径,目标则是存储备份文件的文件夹路径。这一步可以通过 user input 获取。
import os
# 获取需要备份的文件或文件夹路径
source_path = input("请输入需要备份的文件或文件夹路径:")
# 获取备份文件的存储路径
target_path = input("请输入备份文件的存储路径:")
创建备份目录
在进行备份的过程中,我们需要先创建一个专门用于存储备份文件的目录。这一步可以使用 os.makedirs() 函数完成。
# 构造备份文件存储路径
today = target_path + os.sep + time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')
target_dir = today + os.sep + now
# 如果目录不存在,则新建目录
if not os.path.exists(target_dir):
os.makedirs(target_dir)
备份文件
分别处理文件和目录中的所有文件,并将它们复制到备份目录中。对于文件的备份,可以使用 shutil 模块中的 copy() 函数来完成,对于目录的备份,可以使用 shutil 模块中的 copytree() 函数来完成。
# 获取需要备份的文件列表
file_list = []
if os.path.isfile(source_path):
file_list.append(source_path)
else:
file_list = get_all_files(source_path)
# 备份文件
for file in file_list:
# 构造备份文件路径
backup_file = target_dir + os.sep + os.path.basename(file)
# 备份文件
shutil.copy(file, backup_file)
# 获取需要备份的文件夹列表
dir_list = []
if os.path.isdir(source_path):
dir_list.append(source_path)
else:
dir_list = get_all_dirs(source_path)
# 备份文件夹
for dir in dir_list:
# 构造备份文件夹路径
backup_dir = os.path.join(target_dir, os.path.relpath(dir, source_path,))
# 备份文件夹
shutil.copytree(dir, backup_dir)
完整代码(带注释)及示例说明
import os
import time
import shutil
def get_all_files(path):
"""
获取目录下所有文件
:param path: 目录路径
:return: 文件列表
"""
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
file_list.append(os.path.join(root, file))
return file_list
def get_all_dirs(path):
"""
获取目录下所有子目录
:param path: 目录路径
:return: 子目录列表
"""
dir_list = []
for root, dirs, files in os.walk(path):
for dir in dirs:
dir_list.append(os.path.join(root, dir))
return dir_list
# 获取需要备份的文件或文件夹路径
source_path = input("请输入需要备份的文件或文件夹路径:")
# 获取备份文件的存储路径
target_path = input("请输入备份文件的存储路径:")
# 构造备份文件存储路径
today = target_path + os.sep + time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')
target_dir = today + os.sep + now
# 如果目录不存在,则新建目录
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 获取需要备份的文件列表
file_list = []
if os.path.isfile(source_path):
file_list.append(source_path)
else:
file_list = get_all_files(source_path)
# 备份文件
for file in file_list:
# 构造备份文件路径
backup_file = target_dir + os.sep + os.path.basename(file)
# 备份文件
shutil.copy(file, backup_file)
# 获取需要备份的文件夹列表
dir_list = []
if os.path.isdir(source_path):
dir_list.append(source_path)
else:
dir_list = get_all_dirs(source_path)
# 备份文件夹
for dir in dir_list:
# 构造备份文件夹路径
backup_dir = os.path.join(target_dir, os.path.relpath(dir, source_path,))
# 备份文件夹
shutil.copytree(dir, backup_dir)
下面提供两条示例说明:
示例一
输入需要备份的文件夹路径时,输入的是某个文件夹下的所有文件的路径,如:C:\user\file夹,指该文件夹下含有多个文件和子文件夹。完成后在输入备份文件的存储路径时,输入该文件的文件夹路径,如:C:\user\,使用默认的时间戳方式。程序执行后,将file夹下的所有文件和子文件夹内容全部存储到备份文件路径:C:\user\20210708\084512 文件夹内。
示例二
输入需要备份的文件时,输入的是某个文件的路径,如:C:\user\file.txt,指该文件路径,完成后在输入备份文件的存储路径时,输入该文件的路径,如:C:\user\file.txt,使用默认的时间戳方式。程序执行后将该 file.txt 字符文件备份到路径:C:\user\20210708\084512 文件夹内。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 备份程序代码实现 - Python技术站