天道酬勤,学无止境

将目录压缩成单个文件的方法有哪些(What are ways to compress directory into single file)

问题

不知道怎么问,所以我解释一下情况。

我需要存储一些压缩文件。 最初的想法是创建一个文件夹并根据需要存储尽可能多的压缩文件,并创建一个包含每个压缩文件数据的文件。

但是,我不允许创建许多文件,并且必须只有一个。 我决定创建一个压缩文件,它有一个关于进一步数据的标题,并且在标题之后保留压缩数据。 但是这个选项有缺点,例如在创建后编辑这样的文件需要很长时间,因为即使我想再添加一个小文件,它也必须完全重写。

因此,正如我想象的那样,我需要创建具有一些特定属性的文件夹并在其中创建尽可能多的文件。 这甚至可能吗?

我正在为 Windows 创建一个应用程序,因此我可以使用任何适用于 Windows 的东西,并且我正在使用 C++ 进行编码。

注意:需要单个文件,例如,它将通过电子邮件发送并且附加许多文件不是​​理想的解决方案。

注意:我不需要压缩算法,我需要一些方法来有效地将所有内容存储在单个文件中。

回答1

您可以创建 SQLite 数据库或 SQL Server Compact Edition 数据库(位于单个.sdf文件中),并将所有数据作为 BLOB 存储在其中。 数据库管理系统应该很容易与应用程序的其他二进制文件一起部署。

对于 SQL Server Compact,我不确定从非托管代码 (C++) 中使用它是否容易。 在 .NET 中这很容易,但我很确定它也可以在 C++ 中完成,不过 &mdash 需要一些研究。

至少,这个 Stack Overflow 问题涉及如何通过 OLE DB 提供程序从 C++ 连接到这样的数据库。

回答2

使用 7zip SDK 并将所有内容保存在一个 zip 文件中怎么样?

http://www.7-zip.org/sdk.html

回答3

作为另一种选择,您可以使用 tar 文件:自定义标头的文件条目以及其他条目(压缩等)的信息,并将所有文件作为 tar 文件中的条目。 我不知道用库函数替换条目是如何工作的(在这里我获得了至少可以使用 gnu tar http://www.karkomaonline.com/index.php/2005/03/basic- 的信息tar-usage-gnu-tar/ linux 上的命令行实用程序),但似乎无需重新创建整个存档也是可能的。 我认为您首先必须创建更大的虚拟条目,以便以后有足够的可用空间,以便这些条目可以替换为所有需要的数据。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • zlib,gzip和zip有何关系? 它们有什么共同点,又有什么不同?(How are zlib, gzip and zip related? What do they have in common and how are they different?)
    问题 zlib中使用的压缩算法与gzip和zip中的压缩算法基本相同。 什么是gzip和zip ? 它们有何不同,又有何不同? 回答1 简写: .zip是通常使用Deflate压缩方法的存档格式。 .gz gzip格式适用于单个文件,也使用Deflate压缩方法。 通常将gzip与tar结合使用以生成压缩的存档格式.tar.gz 。 zlib库提供Deflate压缩和解压缩代码,以供zip,gzip,png(在deflate数据上使用zlib包装器)和许多其他应用程序使用。 长表: ZIP格式是由Phil Katz开发的一种具有开放规范的开放格式,他的实现PKZIP是共享软件。 它是一种存档格式,用于存储文件及其目录结构,其中每个文件都单独压缩。 文件类型为.zip 。 可以选择加密文件以及目录结构。 ZIP格式支持几种压缩方法: 0 - The file is stored (no compression) 1 - The file is Shrunk 2 - The file is Reduced with compression factor 1 3 - The file is Reduced with compression factor 2 4 - The file is Reduced with compression factor 3 5 - The file is
  • Linux解压缩的几种用法
    Linux各类压宿包的解压方法 01-.tar格式 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!) 02-.gz格式 解压1:gunzip FileName.gz 解压2:$ gzip -d FileName.gz 压 缩:gzip FileName 03-.tar.gz格式 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName 04-.bz2格式 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压 缩: bzip2 -z FileName 05-.tar.bz2格式 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName 06-.bz格式 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 07-.tar.bz格式 解压:tar jxvf FileName.tar.bz 08-.Z格式 解压:uncompress FileName.Z 压缩:compress FileName 09-.tar.Z格式 解压:tar Zxvf FileName
  • linux解压tar命令
    linux解压 tar命令 tar命令 tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!    例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成    『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包! 范例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar
  • 有哪些选项可以选择性地启用或禁用 IIS 6 压缩(What options are there to selectively enable or disable IIS 6 compression)
    问题 与 IIS7 不同,在 IIS6 中,“压缩应用程序文件”和“压缩静态文件”选项是服务器范围的,因此它们适用于每个网站和虚拟目录。 我最近在服务器范围内启用了它,我开始看到越来越多的地方压缩了我不想要的东西——特别是动态创建的图像。 是否有任何类型的压缩配置来为基于“web.config”的 .NET 应用程序启用或禁用它。 我有 ASP.NET 1.1、ASP.NET MVC 1.0 应用程序在机器上运行。 我见过各种 3rd 方过滤器来有选择地压缩内容——这真的是最好的方法吗? 这些在未来可能适合我,但我现在宁愿不花时间在它们上面。 如果我可以为我拥有的一个应用程序(动态创建图像)选择性地禁用压缩,我会很好。 这在 IIS/webconfig 中是不可能的吗? 回答1 看看这篇关于如何在 IIS6 中启用 HTTP 压缩的文章,它讨论了编辑 Metabase.xml 以在目录级别设置压缩。 我没有尝试过这个,所以我不能保证这项技术,但它似乎可能有助于解决你的问题。
  • 使用C#压缩单个文件(Compress a single file using C#)
    问题 我正在使用.NET 4.5,并且如果我尝试使用“ CreateFromDirectory”压缩整个目录,则ZipFile类的效果很好。 但是,我只想压缩目录中的一个文件。 我尝试指向一个特定的文件(folder \ data.txt),但这不起作用。 我考虑了ZipArchive类,因为它具有“ CreateEntryFromFile”方法,但是看来这仅允许您创建现有文件的条目。 有没有办法简单地压缩一个文件而不创建一个空的zipfile(有问题),然后使用ZipArchiveExtension的“ CreateEntryFromFile”方法? **这还假设我正在开发一个公司程序,该程序目前无法使用第三方加载项。 示例来自:http://msdn.microsoft.com/zh-cn/library/ms404280%28v=vs.110%29.aspx string startPath = @"c:\example\start"; string zipPath = @"c:\example\result.zip"; string extractPath = @"c:\example\extract"; ZipFile.CreateFromDirectory(startPath, zipPath); ZipFile.ExtractToDirectory(zipPath
  • Linux下tar bz gz等压缩包的压缩和解压
    Linux下tar bz gz等压缩包的压缩和解压 2014-06-09 22:37 狂师 阅读(564) 评论(0) 编辑 收藏 Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩,本文是对压缩和解压命令的大致总结 .tar.gz  解压:tar zxvf FileName.tar.gz  压缩:tar zcvf FileName.tar.gz dirName solaris下解压 *.tar.gz可能有些不同,按照以下两步实现解压:1、gzip -d *.tar.gz2、tar xvf *.tar第一步,先把*.tar.gz格式解压成*.tar格式第二步,直接解压*.tar格式文件,完成解压---------------------------------------------.tar  解包:tar xvf FileName.tar tar xvf FileName.tar -C DirName(解压到指定文件夹DirName)  打包:tar cvf FileName.tar DirName---------------------------------------------.gz  解压1:gunzip FileName.gz  解压2:gzip -d FileName.gz  压缩:gzip FileName.tar.gz 和
  • 面试题-Linux云计算运维学习之Linux命令面试题
    1.1 Linux 工具 1.1.1 选择 1.1.1.1 一个文件的名字为 rr.Z,可以用来解压缩的命令时() tar gzip compress uncompress 1.1.1.2 可以结束进程命令() kill ctrl+c shutdown halt 1.1.1.3 Linux 下对文件进行归档的命令为:(多选) dd tar zip unzip 1.1.1.4 Linux 查当前目录下 30 天以前的文件并移动到/dev/null 下的命令:(多选) find . -mtime 30 -type f xargs mv {} /dev/null ; find . -mtime +30 -type xargs mv {} /dev/null ; find . -mtime +30 -type f -exec mv {} /dev/null ; find . -mtime +30 -type f -exec rm –rf {} ; 1.1.1.5 dstat 与下面哪个命令类似 vmstat sar iotop abc 1.1.1.6 rpm 安装软件的参数 rpm -ivh rpm -Ivh rpm -Uvh rpm -Iuvh 1.1.1.7 yum 升级软件包选项 rpm -uvh rpm -Uvh 1.1.1.8 查看网络流量命令是? iftop nsload
  • Linux云计算运维工程师day17
    Linux压缩及解压 常用压缩类型:zip,gz,bz2,tar.gz,tar.bz2使用gzip压缩(只能压缩文件,并且压缩后源文件被删除) #若无该命令,需要安装 yum install gzip -y gzip file #压缩文件到该目录下 zcat file.gz #查看gz压缩后的文件 gzip -d file.gz #解压出之后删除源文件 使用zip 命令 #若无zip与unzip命令安装 yum install zip unzip -y which zip #检查改命令在那个目录下 which unzip zip filename.zip filename #将filename压缩,名为filename.zip zip -r dir.zip filename #压缩带目录的文件 zip -T filename.zip #检查压缩包是否完整 unzip -l filename.zip #不解压查看压缩包中的内容 unzip -t filename.zip #不解压查看内容 unzip filename.zip #解压至当前目录 unzip filename.zip -d /opt/ #解压至/opt目录下 Linux中常用的tar(支持文件和目录的压缩归档) 语法:tar [-zjxcvfpP] filename c #创建新的归档文件 x #对归档文件解包 t
  • rsync文件备份
    认真的测试过网上的大多数文章和版本,真正能一次性测试通过的文章太少了,需要反复的推敲,反复的查阅资料,才能真正的测试成功,所以,在此背景下,总结了Rsync,加上自己的理解分享出来;1、 原理篇Rsync,故名思议,是一个远程数据同步工具,可以镜像整个目录树和文件系统,也可以保持源文件的权限,时间和软硬链接,可以优化数据,文件重复数据的删除,也可以在LAN/WAN之间快速的同步多台主机的数据,这主要得益于Rsync的压缩和Rsync的核心算法,其算法,是本地和远程两台主机之间的文件达到同步并保持一致,并且只传送两个文件的不同部分,而不是整个数据进行传送,所以,速度非常快;一个Rsync server能够同时备份多个客户端数据,也可以一个客户端备份多个Rsync server的数据;Rsync 支持搭配scp,ssh和daemon模式,默认端口是873,当第一次连接的时候,会对数据进行完整备份,之后的所有备份,都是进行增量备份,只备份又变化的数据;Rsync只支持单向备份,不支持双向,如果需要双向同步的,可以使用Unison;如果需要实时同步的,可以结合Rsync+inotify;Rsync服务以只读方式提供要备份的数据,避免破坏生产环境的数据;在这里,有必要对Rsync的核心算法,进行讲解:假定在名为 α 和 β 的两台计算机之间同步相似的文件 A 与 B,其中 α
  • 【云计算】云计算技术总结
    同时在语雀发布:前往语雀 选择题 测试题(一)云计算 1.云计算首次正式出现在商业领域是在哪一年? 2006 2.云计算的特征? 广泛的网络接入 ,可测量的服务,弹性服务 ,资源池化 3.分布式计算是将一个任务细分为多个任务,每个任务由一台或多台计算机来完成。 正确 4.下列关于分布式计算的说法 提升系统的容错能力 ,为每个站点的硬件投入小于中间站点的投入 ,一个站点不能运行时可以转移到其他站点 不能提供安全 措施 5.分布式计算的优点 高可用性 ,计算速度快,提升系统容错能力 不能减少维护成本 6.云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。 正确 测试题(二)云服务 1.互联网就是一个超大云。 正确 2.在云计算诞生之前,( )是一个摆在科学家面前的命题。 高效快速解决无限增长的信息的存储和计算问题 3.云计算对企业而言的意义包含有以下哪些方面? 降低了维护成本 ,可以获得更好的存储能力 ,能更加高效地解决信息存储和计算问题 ,能够提高系统的性能 4.简单的来说,云计算等于资源的闲置而产生的。 正确 5.云计算的主要特征 高扩展性 ,采取了虚拟化技术 ,用户可以随时根据需要购买任意规模的云计算资源和服务 实现技术不简单 6.云计算可以把普通的服务器或者 PC
  • 您是否可以预先压缩数据文件以便稍后插入到 zip 文件中以提高性能?(Can you pre-compress data files to be inserted into a zip file at a later time to improve performance?)
    问题 作为安装程序构建的一部分,我们必须将数千个大型数据文件压缩到大约十或二十个“包”中,每个包中包含数百(甚至数千)个文件,这些文件都依赖于与其他文件一起保存包裹。 (如果您愿意,它们会一起进行版本控制。) 然后在实际安装期间,用户选择他们想要在他们的系统中包含哪些包。 这也让他们可以从我们的站点下载软件包的更新作为一个大的版本化文件,而不是要求他们下载数千个单独的文件,这也可能导致他们与同一软件包中的其他人不同步。 由于这些是数据文件,其中一些文件在设计和编码阶段会定期更改,这意味着我们必须重新压缩该特定 zip 包中的所有文件,即使只有一个文件发生了更改。 这使得我们的安装程序构建的打包步骤每次需要一个多小时,其中大部分将重新压缩我们没有接触过的东西。 我们已经考虑将 zip 包单独放置,然后替换其中的特定文件,但是从 zip 中间插入和删除大文件并没有给我们带来太大的性能提升。 (有点,但还不够值得。) 我想知道是否有可能将文件预处理为缓存的原始“压缩状态”,该状态与将其写入 zip 包的方式相匹配,但只有数据本身,而不是 zip 标头信息等。 我的想法是,如果可能的话,在我们的构建步骤中,我们将首先查找没有与之关联的压缩缓存的任何数据文件,如果没有,我们将压缩该文件并将结果写入缓存。 接下来,我们将简单地将所有缓存附加到文件流中,添加文件所需的任何适当的 zip 标头。
  • webpack配置超详细注释解读
    本篇文章主要是在学习typescript过程中,对webpack的一些配置,做了一些配置项详细注解,光看文章就可以详解了解webpack基本配置项所代表的内容和配置方法,个人学习之余分享出来,仅供参考,欢迎大家指正~ 那么我们开始吧~ const HtmlWebpackPlugin = require('html-webpack-plugin') // const CleanWebpackPlugin = require('clean-webpack-plugin') 需要解构,正确方式如下 const { CleanWebpackPlugin } = require("clean-webpack-plugin"); //单线程压缩代码 UglifyJsPlugin //ParallelUglifyPlugin 会开启多个子进程,每个子进程还是通过UglifyJS去压缩代码。变成了并行处理该压缩,并行处理多个子任务,效率更高。 const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin'); module.exports = { entry: "./src/index.js", //入口文件 output: { filename: "main.js" //编译后的文件叫什么 }, resolve: {
  • Python3: 文件压缩解压 zipfile 和 tarfile
    本文链接: https://blog.csdn.net/xietansheng/article/details/115557634 Python3 学习笔记(目录) Python 官网 数据压缩和存档 的文档介绍: Data Compression and Archiving。 Python 内置模块默认支持zlib、gzip、bzip2 和 lzma 数据压缩算法,以及创建 ZIP 和 tar 格式的归档文件。 1. zipfile — 使用 ZIP 存档 Python 官网 zipfile 模块: zipfile — Work with ZIP archives zipfile 模块主要涉及两个类: zipfile.ZipFile: 表示一个 ZIP 压缩文件zipfile.ZipInfo: 表示 ZIP 压缩包内的一个文件或文件夹的条目(存档成员) 1.1 zipfile.ZipFile zipfile.ZipFile类的属性和方法, 通过obj.xxx方式调用: # ZIP 文件名称 def filename # 要使用的调试输出级别。可以将其设置为0、1、2、3, 默认为0表示无输出, # 3表示输出最多。调试信息将写入sys.stdout。 def debug # 与 ZIP 文件关联的注释, bytes 类型 def comment # 构造方法, # # 打开一个
  • Linux运维笔记-日常操作命令总结(2)
    回想起来,从事linux运维工作已近5年之久了,日常工作中会用到很多常规命令,之前简单罗列了一些命令:http://www.cnblogs.com/kevingrace/p/5985486.html今天在这里,详细总结下运维工作中常常用到的一些操作命令(依据本人使用经验而言):[Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/var']错误提示:没有可用的临时目录 可能原因:系统的inodes或磁盘空间占满了。清理下inodes空间即可,比如发现/var/spool/clientmqueue/目录里面有大量小文件,清理下一些无用文件。文件系统结构和基本操作命令 chmod命令:改变权限常用用法:chmod -R xxxx FILE 含义:设置文件或者目录的权限属性,加上R选项,表示递归设置目录下文件和目录的权限属性 上面有4个x,每个x的值为0-7,如果少于4个,那么默认在前面用0值补全,即“77”等价于“0077”。为了简单起见,我们每次使用的时候,都指定4个x好了。 第一个"x":设置SUID(4),SGID(2),STICKY(1) 第二个"x":设置文件属主的r权限(4),w写权限(2),x执行权限(1) 第三个"x":设置文件所属组的r权限(4),w写权限
  • 如何在不使用任何外部工具的情况下使用批处理文件压缩(/ zip)和解压缩(/ unzip)文件和文件夹?(How can I compress (/ zip ) and uncompress (/ unzip ) files and folders with batch file without using any external tools?)
    问题 我知道在这里问过很多类似的问题,但是我对答案(甚至问题)并不完全满意。 主要目标是兼容性-它应该适用于尽可能广泛的Windows计算机(包括XP,Vista和Server 2003-它们合计仍占Windows份额的20%),并且生成的文件应可在Unix / Mac计算机上使用(因此最好使用标准的存档/压缩格式)。 有哪些选项: 创建一个实现一些zip算法的批处理。 显然,这是可能的-但仅使用单个文件并使用CERTUTIL进行二进制处理(默认情况下,某些计算机没有CERTUTIL且无法在Windows XP Home Edition上安装) 通过WSH使用shell.application。 根据我的看法,这是最好的选择。 它允许压缩整个目录,并且可以在每台Windows计算机上使用 Makecab-尽管其压缩不是那么便携,但它在每台Windows机器上都可用。 一些外部程序(例如7-Zip)能够提取.CAB内容,但是当需要在Unix / Mac上使用文件时,它将不那么方便。 尽管压缩单个文件非常简单,但是保留目录结构需要付出更多努力。 使用.NET Framework-不是很好的选择。 从.NET 2.0开始,有GZipStream,但它仅允许压缩单个文件。 .NET 4.5具有Zip功能,但Vista和XP不支持。 甚至更多-在XP和Server 2003上默认未安装
  • linux基础学习笔记一:简单记录一些常用的linux命令
    我这里不是命令大全,而且网上这种命令总结一大堆,大家可以去搜一下。这篇文章只是记录几个我自己会用到的命令,而且只是简单的告诉自己是哪一个命令,至于具体的用法用到时再去搜索。 1. 基本操作 功能命令显示指定工作目录下的内容(列出目前工作目录所含的文件及子目录)ls;ls -a会将隐藏的文件或者子目录也显示出来;ls -l 除了列出名称,亦将文件型态、权限、拥有者、文件大小等资讯详细列出目录切换cd;注意“/”表示的是根目录,“./”表示当前路径显示当前路径pwd;会把当前路径以绝对路径的形式显示出来查看系统信息uname;后面加上-a可以显示全部信息清除屏幕信息clear显示网络配置信息ifconfig;注意这里和windows不一样,不是ipconfig重启reboot关机halt/poweroff查看进程实时运行状态top查看系统当前进程ps 2. 文件/文件夹操作 功能命令创建文件touch 文件名创建文件夹mkdir 文件夹名删除文件(夹)rm -rf 文件(夹)名;-r表示递归删除,也即文件夹里面无论有多少级一并删掉;-f表示强制删除,不会提示查看文件内容cat 文件名文件拷贝cp 被拷贝文件 目标文件移动文件mv 被移动文件 目标文件;这个和拷贝不同的是,被移动文件的内容移动到目标文件后,被移动的文件会被清除显示文件(夹)大小du 文件(夹)名;
  • linux rsync 增量同步备份文件
    rsync 全名 Remote Sync,是类 unix 系统下的数据镜像备份工具。可以方便的实现本地,远程备份,rsync 提供了丰富的选项来控制其行为。rsync 优于其他工具的重要一点就是支持增量备份。 rsync - a fast, versatile, remote (and local) file-copying tool rsync 是一个功能非常强大的工具,其命令也有很多功能选项,它的特性如下: 可以保持文件原来的权限、时间、所有者、组信息、软硬链接等等可以从远程或者本地镜像保存整个目录树和文件系统无须特殊权限 super-user 即可安装使用快速:要比 scp (Secure Copy) 要快;第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,可以使用更少的带宽安全:可以使用 scp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接支持匿名传输,以方便进行网站镜像 rysnc 的官方网站:http://rsync.samba.org/,可以从上面得到最新的版本。 rsync 的使用 Rsync 的命令格式可以为以下六种: # 本地模式 rsync [OPTION...] SRC DEST # 远程 Push rsync [OPTION...] SRC [USER@
  • 如何使用 Python GZip 模块压缩文件夹?(How do I compress a folder with the Python GZip module?)
    问题 我正在创建压缩文件/文件夹的 Python 软件......我将如何创建一段代码,要求用户输入文件夹位置,然后对其进行压缩。 我目前有单个文件的代码,但没有一个装满文件的文件夹。 请详细说明如何执行此操作。 回答1 将文件夹压缩为 tar 文件的代码是: import tarfile tar = tarfile.open("TarName.tar.gz", "w:gz") tar.add("folder/location", arcname="TarName") tar.close() 这个对我有用。 希望这对你也有用。 回答2 GZip 不压缩文件夹/目录,只压缩单个文件。 请改用 zipfile 模块。 回答3 我不做 UI,所以你要自己从用户那里获取文件夹名称。 这是制作 gz 压缩 tarfile 的一种方法。 它不会在递归子文件夹,你需要像os.walk()来。 # assume the path to the folder to compress is in 'folder_path' import tarfile import os with tarfile.open( folder_path + ".tgz", "w:gz" ) as tar: for name in os.listdir( folder_path ): tar.add(name) 回答4
  • py2exe-生成单个可执行文件(py2exe - generate single executable file)
    问题 我以为我听说py2exe可以做到这一点,但我从来没有想过。 有人成功做到了吗? 我可以看到您的setup.py文件以及使用的哪些命令行选项吗? 基本上,我在考虑给它一个可执行文件,该文件可执行将自身解压缩到/ temp并运行的功能。 回答1 PyInstaller将创建一个没有依赖关系的.exe文件; 使用--onefile选项。 它通过将所有需要的共享库打包到可执行文件中,然后在运行之前解压缩它们来完成此操作,正如您所描述的那样(编辑:py2exe也具有此功能,请参见minty的答案) 我使用的是svn中的PyInstaller版本,因为最新版本(1.3)有点过时了。 对于依赖于PyQt,PyQwt,numpy,scipy等应用程序的应用来说,它的运行情况非常好。 回答2 使用py2exe进行此操作的方法是在setup.py文件中使用bundle_files选项。 对于单个文件,您需要将bundle_files设置为1, compressed为True,并将zipfile选项设置为None。 这样,它会创建一个压缩文件以便于分发。 这是直接从py2exe网站引用的bundle_file选项的更完整说明* 使用“ bundle_files”和“ zipfile” 创建单文件可执行文件的一种更简单(更好)的方法是将bundle_files设置为1或2
  • 使用Mercurial,如何在推入之前将一系列变更集“压缩”为一个?(With Mercurial, how can I “compress” a series of changesets into one before pushing?)
    问题 假设我有一个本地和远程Mercurial存储库。 现在,我开始研究一项功能。 我正在处理它,当我认为完成时,我提交更改集。 经过更多测试,我发现可以通过调整代码中的某些内容来进一步改进此功能。 我进行更改并提交。 20分钟后,我发现此新功能存在一个错误,因此我将其修复并提交。 我现在有3个变更集,我真的想将其作为带有消息“实施功能X”的变更集推送到远程存储库。 我怎么能没有太多麻烦呢? 我相信我可以用补丁来做到这一点,但这似乎是很多工作。 回答1 折叠扩展怎么样? 回答2 histedit扩展正是您要寻找的。 hg histedit -o 或者 hg histedit --outgoing 将显示即将发布的变更集的列表。 从列表中,您可以 折叠2个或更多变更集,以创建一个变更集删除变更集,将其从历史记录中删除根据您的喜好对变更集重新排序。 histedit将提示您输入折叠变更集的新提交消息,它默认为两条消息,其中用“ \ n *** \ n”分隔。 您也可以使用mq扩展名获得类似的结果,但这要困难得多。 您也可以使用折叠扩展名进行折叠,但是它不能提供出色的UI,也不能提供编辑结果提交消息的方法。 编辑生成的提交消息还可以清理最终消息,这是我总是最终要利用的东西。 回答3 是的,您可以使用补丁来完成:假设您的工作在100到110的变更集中(包括100和110) 创建补丁: %