如下图本来只压缩一个文件结果这个文件所在的路径全都被压缩进去啦
那么解决方法就是在做压缩的时候,重新做一个命名即可。如下所示:
yadir='D:/databak/'
zipfilepath='D:/zipfile.zip'
filelists = os.listdir(yadi)
if filelists == None or len(filelists) < 1:
print (">>>>>>待压缩的文件目录:" + yadir + " 里面不存在文件,无需压缩. <<<<<<")
else:
z = zipfile.ZipFile(zipfilepath, 'w' ,zipfile.ZIP_DEFLATED)
for fil in filelists:
filefullpath = os.path.join(yadir, fil)
# filefullpath是文件的全路径,fil是文件名,这样就不会带目录啦
z.write(filefullpath, fil)
z.close()如上述代码所示,
如上述代码所示,yadir是需要压缩的文件所在的目录,而filelists是在文件夹下的所有文件名,filefullpath表示的是文件的全路径,也就是需要压缩的文件的路径,而fil表示的就是要压缩的文件的文件名,那么z.write(filefullpath,fil)时,第一个参数表示的是需要压缩到的文件夹的路径,第二个参数名表示的是文件的名字,这样做就可以保证压缩以后不会出现多层文件目录的情况。