python - 如何使用 zipfile 在绝对路径上创建 zip 文件
问题描述
我正在尝试创建来自不同目录的文件的 zip 文件。最后,我想将该 zip 文件保存到与 python 文件 python.xml 不同的路径。我有以下代码片段
def zipfile_method(file_list):
try:
zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip')
print(zip_path)
zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for files in file_list:
path = os.path.abspath(files)
zip_file.write(path)
zip_file.close()
except Exception as e:
print("exception occured during compression %s" % e)
zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf'])
我的 python 文件的路径是/Users/nirmalsarswat/Desktop/app.py
.
我希望该文件路径将打开,/Users/nirmalsarswat/Document/jdk.zip
但 zipfile 将其保存在 python 文件的同一文件夹中,如下所示/Users/nirmalsarswat/Desktop/Users/nirmalsarswat/Document/jdk.zip
。
我如何才能将文件保存在/Users/nirmalsarswat/Document/jdk.zip
路径上
我正在使用 MacOS,Python 3.6.4,提前谢谢!!!
解决方案
实际上我能看到的是,你做得对,但你对路径感到困惑。当您将唯一的绝对路径传递给 时write
,它将使用完整目录压缩文件,这似乎是您面临的问题。
尝试解析basename
,write
它会正常工作,就像这样
from os.path import basename # add this to your imports
def zipfile_method(file_list):
try:
zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip') # no need to this one, parse string itself
print(zip_path)
zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for files in file_list:
path = os.path.abspath(files)
zip_file.write(path, basename(path))
zip_file.close()
except Exception as e:
print("exception occured during compression %s" % e)
zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf'])
推荐阅读
- javascript - 使用异步函数调用创建新的承诺是不好的做法吗?
- python - Python 分析、导入(特别是 __init__)似乎花费的时间最多
- node.js - 无法使用 nginx 显示域名而不是 IP
- react-native - 让 Epubjs-rn 工作
- wildfly - 远程调试 jbpm 进程(包括工作项代码)
- javascript - 使用 AngularJS 关闭 Bootstrap Modal 窗口
- reactjs - 如何在 React 中单击子组件时呈现父组件?
- ruby-on-rails - 如何在无需指定节点名称的情况下迭代嵌套的 YML 文件?
- security - 会话 ID 是否应该在 cookie 中加密?
- drupal - 注意:未定义索引:Drupal\Core\Routing\ 中的路径