def save_backup(path_file, n_backups=5):
if not os.path.exists(path_file):
return
path_dir, path_base = os.path.split(path_file)
path_backup_dir = os.path.join(path_dir, 'backups')
if not os.path.exists(path_backup_dir):
os.makedirs(path_backup_dir)
paths_existing_backups = [i.path for i in os.scandir(path_backup_dir)
if (path_base in i.path and i.path.split('.')[-1].isdigit())]
paths_existing_backups.sort(key=lambda x: os.path.getmtime(x))
tag = 0
if len(paths_existing_backups) > 0:
tag = (int(paths_existing_backups[-1].split('.')[-1]) + 1) % 100
paths_delete = paths_existing_backups[:-(n_backups - 1)] if n_backups > 1 else paths_existing_backups
for path in paths_delete:
os.remove(path)
path_backup = os.path.join(path_backup_dir, path_base + '.{:02}'.format(tag))
shutil.copyfile(path_file, path_backup)
print('wrote to:', path_backup)
评论列表
文章目录