当前位置: 首页 > 知识库问答 >
问题:

python Pyminizip compress_multiple是如何工作的?

徐隐水
2023-03-14

我的python版本是3.5通过Anaconda在Windows 10环境。我使用Pyminizip是因为我需要对我的zip文件进行密码保护,而Zipfile还不支持它。

我能够通过函数pyminizip.compress压缩单个文件,并且加密函数按预期工作。但是,当尝试使用pyminizip.compress_multiple时,我总是遇到Python崩溃(如图片所示),我相信这是由于我的错误输入格式的问题。

我想知道的是:输入参数src文件列表路径的可接受格式是什么?来自Pyminizip的文档:

pyminizip.compress_multiple([u'pyminizip.so','file2.txt'],“file.zip”,“1233”,4,progress)
参数:
1。src文件列表路径(列表)
2。dst文件路径(字符串)
3。密码(字符串)或无(创建无密码zip)
4。compress_level(int)介于1到9之间,1(更快)<---->9(更多压缩)

看来第一个参数src file LIST path应该是包含所有需要压缩的文件的列表。因此,我尝试使用compress_multiple使用命令压缩单个文件:

pyminizip.compress_multiple(['filename.txt'],'output.zip','password',4,可选)

导致Python崩溃。所以我尝试在参数中添加一个完整的路径。

pyminizip.compress_multiple([os.getcwd(),'filename.txt'],...)

但是,它又坠毁了。所以我想也许我得像这样分开这条路

path=os.getcwd().split(os.sep)
pyminizip.compress_multiple([path,'filename.txt'],...)

还是运气不好。有什么想法吗?

共有1个答案

霍弘厚
2023-03-14

Pyminizip需要文件中的路径名(或运行脚本的相对路径名)。

你的例子:

pyminizip.compress_multiple( [os.getcwd(), 'Filename.txt'], ... )

给出os.getcwd()的文件列表,然后是另一个文件'filename.txt'。您需要使用os.path.join()将它们组合到一个路径中

在文件名示例中,您需要:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename.txt')],...)

交谈着:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename1.txt'), os.path.join(getcwd(), 'Filename2.txt')],...)
 类似资料:
  • 应用程序具有上下文路径-->/spring-form-simple-project 因此,为了访问,我使用: 这个控制器又返回student.jsp,当提交这个student.jsp时,它用-->@RequestMapping(value=“/AddStudent”,method=RequestMethod.post)调用controller 任何关于这通常如何工作的指示都将是有帮助的。 谢谢!

  • 本文向大家介绍hibernate 是如何工作的?相关面试题,主要包含被问及hibernate 是如何工作的?时的应答技巧和注意事项,需要的朋友参考一下 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。

  • 我很想知道谷歌应用商店服务中的Activity认可是如何工作的? 我认为活动是通过加速计数据识别的。是这样吗?。请告诉我详细情况如何

  • 我对GridBagLayout这一主题不熟悉,我无法理解约束、重量和填充之间的确切区别。 我可以而不分配。 除非您指定了至少一个非零值,否则所有组件都会聚集在其容器的中心。这是因为当权重为0.0(默认值)时,GridBagLayout会在其单元格网格和容器边缘之间放置任何额外的空间。 我的问题是,如果这是真的,那么为什么组件之间没有空间,它们看起来是连接的?

  • 从@mock和@injectmocks之间的差异,我理解@injectmocks被用作创建实例的注释,并将用@mock创建的mock注入其中。我想我不明白它是怎么工作的。 以下是我的问题: 在中,当我调用时,它返回一个空集...我的问题是:为什么不抛出(只声明mockedappoinceptions)?也许因为这是一个嘲弄?如果原因是这样,为什么模拟不抛出“NullPointerException

  • 这可能是一个很难回答的问题。我才刚开始学Java 我不懂paintComponent方法的操作。我知道如果我想画一些东西,我必须重写paintComponent方法。

  • 我观看了Walter Brown在Cppcon14上关于现代模板编程的演讲(第一部分,第二部分),他介绍了他的SFINAE技术。 示例: 给定一个简单的变量模板,如果所有模板参数都格式良好,则计算结果为: 存在 格式良好 有效,并计算为 2. 不存在 格式错误,以静默方式失败(sfinae) ,因此丢弃此模板

  • 那么实际上是如何工作的呢?