gpt4 book ai didi

python - 如何在 Python 中将文件写入 Zip 文件的根目录

转载 作者:行者123 更新时间:2023-12-01 05:32:51 26 4
gpt4 key购买 nike

我正在尝试使用 zipfile 将压缩存档中的文件替换为脚本。文件是一个目录,存档在另一个目录中。为此,我将原始存档中的所有内容复制到另一个存档中,不包括我要替换的文件。然后,我将要替换的文件的新版本写入新存档中,关闭它,然后删除旧存档并重命名新存档。应该很容易吧? 错误。

无论出于何种原因,zipfile.write() 方法都会做一件愚蠢的事情,它假设第二个(可选)参数 arcname 与您的文件名,除非您指定它。所以,如果我有以下内容:

fileName = "C:\\Documents\\file"
archive.write(fileName)

我将获得一个存档,其中包含一个名为“文档”的子存档,其中包含该文件。我希望该文件位于存档的根目录中(旁注:“根目录”是我所指内容的正确术语吗?)

我尝试过的事情:

  • archive.write(fileName,'') 这会在存档中生成一个奇怪的文件,无法打开该文件。
  • archive.write(fileName, archive) 我真的认为这会起作用,但系统真的不喜欢它。
  • archive.write(fileNameWithoutPath) 这返回了一个错误,因为 Python 无法再找到该文件。

那么我如何指定要将文件放在存档的根目录中,同时仍指定其路径以便 Python 可以找到它?

次要且半相关的问题:有没有办法创建新的存档,使其隐藏在 Windows 资源管理器中?

最佳答案

我假设您想要在名为 file 的 zip 文件中包含一个条目,其中包含 C:\Documents\file

来自python docs

ZipFile.write(filename[, arcname[, compress_type]])
Write the file named filename to the archive, giving it the archive name arcname

所以你想要

archive.write(fileName, fileNameWithoutPath)

第一个参数是 zip 中的文件,第二个参数是要在存档中使用的名称,因为它不包含路径分隔符,因此不会创建任何目录。

关于python - 如何在 Python 中将文件写入 Zip 文件的根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com