最近,小浩同学因为论文的事天天在和我抱怨。他的论文已经修改了n遍了,他的导师还是不满意,动不动就重写,着实无情。
看着他我笑而不语,仿佛就回到了当时我改论文的时候,因为我们的论文刚好被抽到,可能会被教育局抽查,所以导师抓的特别严,改论文改得怀疑人生。
印象特别深刻,有个哥们查重率都达到5%以下了,导师依然不肯放过他。很多论文到最后时刻都胶装好了,依然没什么用,统统回炉重造。
依照我丰富的改论文的经验,每个版本的论文肯定需要备份的,因为随时可能改回原版。为了不让小浩同学每次都手动备份一大堆资料和论文,我决定帮帮他。
刚好我最近学到了文件夹的压缩,我可以将每个版本备份成一个压缩文件,并在命名时,给每个压缩包添加版本号,这样,就能随时获取之前的版本了。
接下来我们来思考一下具体应该怎么实现:
1.首先我们可以创建一个zip文件,按照版本号,先判断是否存在,不存在直接创建,否则将版本递增,继续判断。
2.然后通过递归遍历,将需要备份的每个文件夹和文件添加到zip文件中。
具体实现步骤如下:
import zipfile, os
# 备份
def backupToZip(folder):
os.chdir("F:\\test\\")
folder = os.path.abspath(folder)
number = 1
while True:
# number为版本号,加在zip命名上
zipFilename = os.path.basename(folder) + '_' + str(number) + '.zip'
if not os.path.exists(zipFilename):
break
number = number + 1
# 创建zip文件
print('创建 %s...' % (zipFilename))
backupZip = zipfile.ZipFile(zipFilename, 'w')
# 递归遍历文件夹和文件,添加到zip文件
for foldername, subFolder, filenames in os.walk(folder):
print('添加文件%s...' % foldername)
backupZip.write(foldername)
for filename in filenames:
newBase = os.path.basename(folder) + '_'
if filename.startswith(newBase) and filename.endswith('.zip'):
continue
backupZip.write(os.path.join(foldername, filename))
backupZip.close()
print('备份成功')
程序准备好了,我们调用一下:
backupToZip('F:\\test\\AlsPythonBook\\')
我们先看看该目录下都有些什么文件:
接下来我们运行程序将数据备份一下:
py backupToZip.py
接着我们看看备份的压缩包数据:
果然备份成功了,这样就不用每次去手动去修改版本了,虽说给论文起名字还是挺有意思的,哈哈
小浩同学,这下你可以和你的导师继续肝了,不用客气,请叫我雷峰。
喜欢本文的话,可以关注以下公众号,每天定时更新一篇python学习日记,让我们一起成长!