首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中使用Zipfile模块添加密码和输出目录?

如何在Python中使用Zipfile模块添加密码和输出目录?
EN

Stack Overflow用户
提问于 2019-05-22 05:50:27
回答 1查看 77关注 0票数 0

我从网上得到了下面的代码,我正在尝试添加一个密码,我想将结果目录更改为"C:#SFTPDWN“(最终的Zip文件应该在这个文件夹中)。

我试着像下面这样改变它,它不起作用。

代码语言:javascript
复制
with ZipFile('CC-Data.zip', 'w', 'pass word') as zip:

谁能告诉我如何更改此代码以添加密码和更改结果文件夹?

最后一件事,目前它将压缩#SFTPDWN文件夹,我只想压缩里面的所有内容(现在它将创建两个文件夹(CC-Data.zip和里面的#SFTPDWN ))。谁能告诉我如何压缩#SFTPDWN文件夹中的所有内容?

代码

代码语言:javascript
复制
from zipfile import ZipFile
import os


def get_all_file_paths(directory):
    file_paths = []

    for root, directories, files in os.walk(directory):
        for filename in files:
            filepath = os.path.join(root, filename)
            file_paths.append(filepath)

    return file_paths


def main():
    # path to folder which needs to be zipped
    directory = 'C:\#SFTPDWN'

    file_paths = get_all_file_paths(directory)

    print('Following files will be zipped:')
    for file_name in file_paths:
        print(file_name)

    with ZipFile('CC-Data.zip', 'w') as zip:
        # writing each file one by one
        for file in file_paths:
            zip.write(file)

    print('Zipped successfully!')


if __name__ == "__main__":
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-22 06:04:51

对于密码问题:来自文档:

此模块...支持对ZIP压缩文件中的加密文件进行解密,但目前不能创建加密文件。解密非常慢,因为它是用原生Python实现的,而不是用C实现的。

您需要使用第三方库来创建加密压缩包,或者以其他方式加密归档文件。

对于第二部分,在ZipFile.write中,文档还提到:

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)

将名为filename的文件写入归档文件,为其提供归档名称 filename (默认情况下,这将与filename相同,但没有驱动器号,并且删除了前导路径分隔符)。..。

注意:归档名称应该相对于归档根目录,即它们不能以路径分隔符开头。

因此,您需要去掉file变量的任何前缀,并将其作为arcname参数传递。使用os.path.relpath可能会有帮助,例如(我在Linux上,但应该在Windows下使用Windows path):

代码语言:javascript
复制
>>> os.path.relpath("/folder/subpath/myfile.txt", "/folder/")
'subpath/myfile.txt'

侧边栏:像"C:\Something"这样的路径是非法字符串,因为它有转义\S。Python在某种程度上容忍了这一点(我认为在3.8中它会出错),并按字面意思重写它们。使用"C:\\Something"r"C:\Something""C:/Something"如果你尝试像"C:\Users"这样的东西,它实际上会抛出一个错误,或者使用"C:\nothing"它可能会默默地做一些奇怪的事情……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56246801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档