zl程序教程

您现在的位置是:首页 >  Python

当前栏目

用python压缩文件并设置密码

2023-03-20 14:57:38 时间

1、zipfile设置密码

ZipFile.setpassword(pwd)

将pwd设置为默认密码以提取加密文件。在

2.6版的新增功能。

Python zipfile docs在顶部说他们“[支持对ZIP存档中的加密文件进行解密,但它目前无法创建加密文件。”

https://docs.python.org/3/library/zipfile.html

您需要使用第三方库来创建加密的zip,或者以其他方式加密存档。

例子

# coding=gbk

import zipfile

import os

# 压缩文件路径

target = r'C:UsersAdministratorDesktopzip2929.zip'

file_url=r'C:UsersAdministratorDesktopzip2929号记事本.txt'

try:

         #mode的几种:解压:r,压缩:w,追加压缩:a

         with zipfile.ZipFile(target,mode="w") as f:

                  f.write(file_url, arcname="号记事本.txt")         #不加arcname会导致压缩包里带有文件夹路径

except Exception as e:

         print("异常对象的类型是:%s"%type(e))

         print("异常对象的内容是:%s"%e)

finally:

         f.close()

2、调WINZIP

WINDOWS 平台,直接调WINZIP的zip命令行程序打包,有一个参数是加上密码的

# coding=gbk
def zipDir( zipFile, dirpath,password=None):
    """
    压缩指定文件夹
    :param dirpath: 目标文件夹路径
    :param outFullName: 保存路径+xxxx.zip
    :return: 
    """
    import os
    print("zipDir")
    if password:
        cmd = "zip -P %s -r %s %s" % (password, zipFile, dirpath)   #有密码时设置密码并压缩
        print(cmd)
    else:
        cmd = "zip -r %s %s" % (zipFile, dirpath)   #无密码直接压缩
        print(cmd)
    status = os.popen(cmd)
    #执行系统命令
    return zipFile
    
if __name__ == "__main__":
    print("__main__")
    zipDir('d:\z.zip','d:\list.txt','ghost')

3、rarfile

如果是rar文件解压,也是类似,同样的还是要安装相应的库

from unrar import rarfile

file = rarfile.RarFile('压缩文件路径') 

file.extractall('解压到目标文件夹路径') 

4、使用7-Zip

使用7-Zip通过子流程模块工作。以下是我遇到并必须解决的一些问题: 您需要在Popen子进程中指定7zip的路径,并使用变量(而不是实数字符串)构建命令:

appPath="C:Program Files\7-Zip"

zApp="7z.exe"

zAction='a'

zPass='-pPASSWORD'

zAnswer='-y'

zDir=directoryToZip

progDir=os.path.join(appPath,zApp)

cmd = [zApp, zAction, zipFileName, zPass, zAnswer, zDir]

subprocess.Popen(cmd, executable=progDir, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)

这将创建一个zip文件(在zipFileName变量中的名称所在的位置),包括“directoryToZip”路径中的内容(目录和文件)

必须将progDir指定为独立于作为Open命令一部分调用的应用程序(这是可执行路径),并且需要将命令字符串构建为变量来处理windows反斜杠转义设置。在