调用命令行加密压缩成ZIP文件时,无法加密带有引号“”的密码,希望高手帮忙指点一下,谢谢~

import subprocess

def zipDir():
    cmd = ['zip', 'a', '-p%s' % password, outFullName, dirpath]
    p = subprocess.Popen(cmd, executable=r'C:\Program Files\WinRAR\WinRAR.exe')
    p.wait()
    print(cmd)

if __name__ == "__main__":
    dirpath = "C:\\New"
    outFullName = "C:\\test.zip"
    #password = "123a.@$"
    password = "\"123a.@$"#带引号的密码无法进行加密
    print(password)
    print ('start zip')
    zipDir()
附言 1  ·  3年前

应该是双引号传到CMD需要转义,但是问题还是没有解决,。,

附言 2  ·  3年前

问题已解决,我弃用了subprocess.popen方法,使用os.system(cmd),cmd = r'C:\"Program Files"\WinRAR\WinRAR.exe a -p""123 C:\test.zip C:\New'

Jason990420
最佳答案

Try this, 两个双引号

password = '""123a.@$'
3年前 评论
讨论数量: 3
pardon110
  1. 先用命令行验证winRAR命令行模式下的所有目标参数是正确的
  2. 带引用的参数可这样写 password = r'"123a.@$'
3年前 评论
Jason990420

Try this, 两个双引号

password = '""123a.@$'
3年前 评论

cmd中双引号转义,在前面再添加一个双引号即可。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!