用python写个自动备份软件,怎么去实现?

自动备份文件及文件夹

我们在写软件或做其他项目的时候,总是担心文件被损坏或者丢失,所以每次改完程序都会把整个文件夹压缩一个ZIP文件,在压缩ZIP文件的时候,我希望保存不同的版本,希望ZIP文件名每次创建时都有变化,我记录修改了什么。

列如 backup project_1.zip,backup_project_2.zip 等等,这些都可以用手工完成,但每次可能不小心弄错了ZIP文件的编号,或者忘记了去备份。我们写一个简单的程序来完成这烦人的工作。

进群:700341555获取各类Python学习资料!

实现思路

第一步:定义一个backupTozip( )函数,它只接收一个参数,即folder,这个参数是一个字符串路径,指向需要备份的文件夹。该函数将决定它创建什么样的文件名,遍历folder文件夹,将每一个文件夹的子文件和文件添加到ZIP文件中。

1.命名这个ZIP文件,使用folder的绝对路径得到压缩ZIP的名字,列如:文件夹是"/Users/zou/Desktop/zip",那么ZIP文件的名称应该是 zip_N.zip,第一次运行程序时N=1,以此类推。

2.通过检查zip_1.zip是否存在,再检查zip_2.zip是否存在,以此类推,确定N是什么,用number变量来表示N,在循环内不断增加,并调用 os.path.exsits( )来检查文件是否存在,第一个不存在的文件名会导致循环break。

代码如下:

importos
importzipfile
​
​
defbackupToZip(folder):
 # Backup the entire contents of "folder" into a zip file.
​
 folder= os.path.abspath(folder) # make sure folder is absolute
​
 # Figure out the filename this code should used based on
 # what files already exist.
 number= 1
 whileTrue:
 zipFilename= os.path.basename(folder) +'_'+str(number) +'.zip'
 ifnotos.path.exists(zipFilename):
 break
 number= number+1

第二步:创建ZIP文件

既然新的ZIP文件的文件名保存zipFilename 变量中,你就可以调用zipfile.ZipFile( ),来创建ZIP文件,一定要传入'w'作为第二个参数,这样文件以写模式打开。

# Create the zip file.
print('Creating %s...'%(zipFilename))
backupZip= zipfile.ZipFile(zipFilename, 'w')
​

第三步:遍历目录树并添加到ZIP文件

使用os.walk( )函数,列出文件夹以及自文件夹的每个文件,for循环中使用os.walk( ),在每次迭代中,它返回这次迭代的文件夹名称 , 这文件夹的子文件夹,以及文件夹的文件名。

第一个for循环将文件夹添加到ZIP文件,第二个for循环将遍历filenames列表中的每个文件,将每个文件也添加到ZIP文件中,生成的备份除外。

# Walk the entire folder tree and compress the files in each folder.
 forfoldername, subfolders, filenamesinos.walk(folder):
 print('Adding files in %s...'%(foldername))
 # Add the current folder to the ZIP file.
 backupZip.write(foldername)
​
 # Add all the files in this folder to the ZIP file.
 forfilenameinfilenames:
 iffilename.startswith(os.path.basename(folder) +'_') andfilename.endswith('.zip'):
 continue # don't backup the backup ZIP files
 backupZip.write(os.path.join(foldername, filename))
 backupZip.close()
 print('Done.')

源码如下:

用python写个自动备份软件,怎么去实现?

程序运行后的结果:

用python写个自动备份软件,怎么去实现?

用python写个自动备份软件,怎么去实现?

猜你喜欢

转载自blog.csdn.net/weixin_44138053/article/details/87360523