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

时间:2016-08-23 09:33:44

标签: python python-3.x

我正在尝试编写一个python 3脚本,它将压缩目录/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()

4 个答案:

答案 0 :(得分:1)

import os
latest_file = sorted(os.listdir('/home/pi/backups'))[-1]

这应该为您提供最新的文件名。下一个可以从这个名字中找到。

答案 1 :(得分:1)

使用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

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

答案 2 :(得分:0)

也许使用时间戳?然后,您将在第一时间知道您正在寻找哪个特定备份。

this.childBox.html("<p>Hello</p>")

答案 3 :(得分:0)

您可以尝试过滤/计数方法:

# we set the path, and the word key that we are looking for
path = '/home/user/backups'
word_key = 'backup-'

# we count the occurrences and generate a new filename from it
backups_count = len(filter(lambda x : word_key in x, os.listdir(path)))
filename = 'backup-{}.tgz'.format(backups_count)