要求:
假定你正在做一个项目,它的文件保存在 C:\AlsPythonBook 文件夹中。你担心工作 会丢失,所以希望为整个文件夹创建一个 ZIP 文件,作为“快照”。你希望保存不同的版 本,希望 ZIP 文件的文件名每次创建时都有所变化。例如 AlsPythonBook_1.zip、 AlsPythonBook_2.zip、AlsPythonBook_3.zip,等等。你可以手工完成,但这有点烦人, 而且可能不小心弄错 ZIP 文件的编号。运行一个程序来完成这个烦人的任务会简单得多。
针对这个项目,打开一个新的文件编辑器窗口,将它保存为 backupToZip.py。
#! python3
#backupToZip.py - 将一个文件夹备份到一个ZIP文件
import zipfile , os
#弄清ZIP文件的名字
def backupToZip(folder):
folder = os.path.abspath(folder) #返回参数的绝对路径的字符串
number = 1
while True:
zipFilename = os.path.basename(folder) + '_' +str(number) + '.zip'
#返回一个字符串包含folder参数中最后一个斜杠之前的所有内容
if not os.path.exists(zipFilename):
#如果zipFilename参数所指的文件或文件夹存在,将返回True,否则将返回False
break
number = number+1
#创建新ZIP文件
print('creating %s...' %(zipFilename))
backupZip =zipfile.ZipFile(zipFilename,'w')
#遍历目录树并添加到ZIP文件
for foldername,subfolders,filenames in os.walk(folder):
print('Adding files in %s...' % (foldername))
#将当前文件夹添加到ZIP文件中
backupZip.write(foldername)
#将此文件夹中的所有文件添加到ZIP文件中
for filename in filenames:
if filename.startswith(folder) and filename.endswith('.zip'):
continue
backupZip.write(os.path.join(foldername, filename))
backupZip.close()
print('Done.')
backupToZip('D:\\练习\\日期文件')
复制代码
os.path模块功能:
方法
功能
os.path.abspath(path)
返回绝对路径
os.path.split(path)
将path分割成目录和文件名二元组返回
os.path.dirname(path)
返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)
返回path最后的文件名
os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)
如果path是绝对路径,返回True
os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)
如果path是一个存在的目录,则返回True。否则返回False
os.path.getatime(path
)返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)
返回path所指向的文件或者目录的最后修改时间
os.path.getctime(path)
返回path所指向的文件或者目录的创建时间
os.path.getsize(name)
获得文件大小,如果name是目录返回0L
os.path.join(path1[, path2[, …]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略.
os.path.splitext()
分离文件名与扩展名