python3脚本来压缩目录并动态命名archi

2024-06-01 09:47:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个python3脚本,它将压缩目录/home/pi/results的内容并将其复制到另一个文件夹/home/pi/backups
我需要能够多次运行这个脚本,每次,结果归档文件都是根据以前的归档文件命名的。所以第一次运行将创建backup001.tgz,第二次运行将创建backup002.tgz,等等。每个备份都将是一个包含该目录中任何内容的完整备份。在

我已经知道了如何将文件夹压缩到.tgz,我只是不知道如何根据以前的备份给它追加一个数字。在

tar=tarfile.open(backupdir+'backup.tgz', "w:gz")
            tar.add(resultspath, arcname=os.path.basename(resultspath))
            tar.close()

Tags: 目录脚本文件夹内容homepitar备份
3条回答
import os
latest_file = sorted(os.listdir('/home/pi/backups'))[-1]

这会给你最新的文件名。从这个名字可以看出下一个。在

也许用时间戳?然后你一眼就能知道你要找哪一个具体的备份。在

import datetime   

date = datetime.datetime.utcnow().isoformat()
filename = 'backup-{}.tgz'.format(date)
filepath = os.path.join(backupdir, filename)

tar=tarfile.open(filepath, "w:gz")
        tar.add(resultspath, arcname=os.path.basename(resultspath))
        tar.close()

使用glob获取已存在的备份列表
使用max()custom key来查找最后一个
使用string formatting创建下一个文件名

import glob
filelist = glob.glob('Backup???.tgz')
last = max(filelist, key = lambda x: x[6:9])
filename = 'Backup{0:03d}.tgz'.format(int(last[6:9])+1)
print filename

(为包含Backup001.tgz&;Backup002.tgz的目录输出Backup003.tgz

相关问题 更多 >