当前位置: 首页 > 面试题库 >

zip文件,避免目录结构

唐阳泽
2023-03-14
问题内容

我有一个可压缩文件(new.txt)的Python脚本:

tofile =  "/root/files/result/"+file
targetzipfile = new.zip # This is how I want my zip to look like
zf = zipfile.ZipFile(targetzipfile, mode='w')
try:
    #adding to archive
    zf.write(tofile)
finally:
    zf.close()

当我这样做时,我得到了zip文件。但是,当我尝试解压缩文件时,我在对应于文件路径的一系列目录中获取了文本文件,即,我rootresult目录中看到一个名为的文件夹,并且其中包含更多目录,即

/root/files/result/new.zip

当我解压缩时,new.zip我的目录结构看起来像

/root/files/result/root/files/result/new.txt

有没有一种方法可以使我解压缩,而只能得到new.txt

换句话说/root/files/result/new.zip,当我解压缩时new.zip,它看起来应该像

/root/files/results/new.txt

问题答案:

zipfile.write()方法采用一个可选arcname参数,该参数指定zipfile中文件的名称

我认为您需要对目标进行修改,否则它将复制目录。使用:arcname避免它。尝试这样:

import os
import zipfile

def zip(src, dst):
    zf = zipfile.ZipFile("%s.zip" % (dst), "w", zipfile.ZIP_DEFLATED)
    abs_src = os.path.abspath(src)
    for dirname, subdirs, files in os.walk(src):
        for filename in files:
            absname = os.path.abspath(os.path.join(dirname, filename))
            arcname = absname[len(abs_src) + 1:]
            print 'zipping %s as %s' % (os.path.join(dirname, filename),
                                        arcname)
            zf.write(absname, arcname)
    zf.close()

zip("src", "dst")


 类似资料:
  • 问题内容: 我需要使用以下命令创建一个zip文件: 这可行,但是创建的zip文件会创建一个目录结构,将目录模仿为原始文件。我不需要很多额外的文件夹。 粗略浏览手册页或Google搜索时,我没有找到答案。 问题答案: 您可以使用。

  • ├── LICENSE ├── Outpostcamera # 哨岗相机 │ ├── launch # launch 文件 │ ├── msg # 消息类型 │ ├── photo # 场地可视化文件 │ ├── src # 哨岗相机源文件 │ └── tools # 权重文件及配置文件 ├── RTS-deplo

  • 我有一个包含一些子目录的目录。我可以看到目录中带有“gci-Recurse *| %{ Write-host$_}”的文件。在这个给定的列表中有一些zip文件。我想在使用“展开存档”时将这些zip文件解压缩到一个名为zip文件的目录中。 如何将调用“gci-Recurse*|%{write host${}”与“Expand Archive”结合起来。

  • 问题内容: 我可以在不生成编译的.pyc文件的情况下运行python解释器吗? 问题答案: 来自“ Python 2.6的新增功能- 解释器更改” : 现在,可以通过向Python解释器提供-B开关,或者通过在运行解释器之前设置 PYTHONDONTWRITEBYTECODE环境变量来阻止Python编写.pyc或.pyo文件。此设置可作为Python程序的 变量使用,并且Python代码可以更改

  • 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件、网络资源等(也有例外,比如系统通讯录、照相机、照片等能在用户授权的情况下被第三方应用访问)[1]。 请注意,使用沙盒的目的是为了防止被攻击的应用危害到系统或者其他应用,它并不能阻止应用本身被攻击,因此,开发者需要防御式的编程来避免应用被攻击。苹果官方是这样说的: Important:

  • 前言 这一篇,我们将接着上篇来完成创建项目文件、目录结构。 回顾 先回顾一下现在项目有哪些东西了: . ├── app │   ├── app.vue │   ├── common │   │   ├── img │   │   ├── js │   │   └── scss │   ├── index.html │   ├── index.js │   ├── router