文件的备份需要用到 os模块 os.path模块 为了防止文件重名需要用的 time模块的时间戳或是uuid模块,还需要用的IO流全局函数open()
如果对模块中的方法不熟可以查看: python----常用模块(常用方法)_m0_55785131的博客-CSDN博客
全局函数:
https://blog.csdn.net/m0_55785131/article/details/121286007
#导入需要的模块
import os
import os.path
import uuid
#自定义函数模块
def FileBackup(url,d_url):
#先获取当前路径的文件,返回的是一个列表
File = os.listdir(url)
#遍历当前的得到的列表
for i in File:
#将遍历出来的文件名拼接成绝对路径
FileReal = url + "\\" + i
#判断该绝对路径是否为文件
if os.path.isfile(FileReal):
#如果该路径是一个文件则读取该文件的内容 以字节的形式
file = open(FileReal,"rb")
# 将该路径的文件名用切片的方法切出来 并拼接到备份路径上,为了防止文件重名用uuid模块
folder = d_url + "\\" + uuid.uuid4().hex + FileReal[FileReal.rfind("\\")+1::]
# 打开备份文件 并给定一个写入权限 以字节方式
d_file = open(folder,"wb")
#向备份文件中写入需要备份的文件
d_file.write(file.read())
#写入之后关闭Io流
file.close()
d_file.close()
#打印被备分的文件
print(folder)
#判断该路径是否是目录
elif os.path.isdir(FileReal):
#如果是目录则递归调用
FileBackup(FileReal,d_url)
else:
#如果无法访问则输出
print("!!!")
print("备份完成!!!")
#主函数
if __name__ == '__main__':
url = input("输入需要备份文件的路径:")
d_url = input("输入备份的路径:")
FileBackup(url,d_url)