【发布时间】:2019-10-02 14:26:45
【问题描述】:
我正在从 Python 3 脚本压缩一个文件夹。
我通常在终端中使用并且它有效的命令是
zip -P P4ssw0rd somefolder.zip somefolder/*
(-P 我用于密码加密,最后是/*,因为我想压缩文件夹的内容,如果我不包含它,存档只包含一个空文件夹)
这成功创建了一个 somefolder.zip,其中包含正确的、受密码保护的内容。
当我从我的脚本中执行这个命令时,我正在使用
subprocess.call(['zip', '-P', 'P4ssw0rd', 'somefolder.zip', 'somefolder/*'])
这给了我一个 zip 错误(如果我直接在终端中编写命令,我会得到同样的错误,但如果我拼错了文件夹名称,例如 zip -P P4ssw0rd somefolder.zip someOtherfolder/*)
警告说:
zip 警告:名称不匹配:somefolder/*
据我了解,它以某种方式将 / 和 * 解释为文件夹名称的一部分,而不是我试图在文件夹内导航...
有什么想法吗?
为了让事情更混乱:
如果 somefolder.zip 已经存在,那么
subprocess.call(['zip', '-P', 'P4ssw0rd', 'somefolder.zip', 'somefolder/*'])
将执行。它说它正在更新文件夹的内容,但据我从档案本身可以看出,实际上没有任何变化。但是,如果我将 'somefolder/*' 更改为 'someOtherfolder/*' 之类的其他名称,则会再次引发名称不匹配错误。
【问题讨论】:
标签: python python-3.x ubuntu terminal zip