- 主题:python有办法并行写入一个zip文件吗?
【 在 hgoldfish 的大作中提到: 】
: zip 不是固实压缩。可以随机访问。楼主的需求可以做到。但不好做。
: 主要原因是在压缩之前,并不知道最终压缩得到多少字节。
: 如果是 tar 就做不到了。
: 事实上 7zip 官方就实现了多线程地压缩与解压缩。
7zip啥原理啊??
--
FROM 139.227.19.*
没啥原理啊。就是每个文件可以单独地压缩。
最后写个文件头,把每个被压缩后的文件顺序写入就行了。
【 在 JulyClyde 的大作中提到: 】
: 7zip啥原理啊??
--
FROM 117.28.110.*
谢谢,我来研究一下7zip
【 在 hgoldfish 的大作中提到: 】
: zip 不是固实压缩。可以随机访问。楼主的需求可以做到。但不好做。
: 主要原因是在压缩之前,并不知道最终压缩得到多少字节。
: 如果是 tar 就做不到了。
: ...................
--
FROM 39.144.104.*
【 在 hgoldfish 的大作中提到: 】
: zip 不是固实压缩。可以随机访问。楼主的需求可以做到。但不好做。
: 主要原因是在压缩之前,并不知道最终压缩得到多少字节。
: 如果是 tar 就做不到了。
: ...................
从我的感觉看, 一个zip文件, 增删文件, 除非在末尾,
如果, 从中间删除增加一些文件, 大概率是需要从头到尾重新生成,所以,
这个随机估计仅仅限于读取。
--
FROM 124.126.2.*
如果是修改的话。7zip 一样的得重新生成。比如删除一个 1MB 大小的文件,写入 1KB 的另外一个文件。那一定得重写吧,总不能放空白对吧?
所以这个并行,可以用在重新创建文件时。先压缩得到结果,放在内存。最后写入文件列表、字典和内容。
具体的,或许你们可以看一下 7zip 的压缩对话框。我没有看过它的源代码,也只是从使用方式上面去猜测。
【 在 poggy 的大作中提到: 】
: 从我的感觉看, 一个zip文件, 增删文件, 除非在末尾,
: 如果, 从中间删除增加一些文件, 大概率是需要从头到尾重新生成,所以,
: 这个随机估计仅仅限于读取。
: ...................
--
FROM 117.28.110.*
那最后不还得顺序写入吗?
按说zip也可以各文件分别压缩然后顺序写入吧?应该是一样的?
还是说zip内各文件的压缩字典是公用的?
【 在 hgoldfish 的大作中提到: 】
: 没啥原理啊。就是每个文件可以单独地压缩。
: 最后写个文件头,把每个被压缩后的文件顺序写入就行了。
--
FROM 139.227.19.*
【 在 poggy 的大作中提到: 】
: 从我的感觉看, 一个zip文件, 增删文件, 除非在末尾,
: 如果, 从中间删除增加一些文件, 大概率是需要从头到尾重新生成,所以,
: 这个随机估计仅仅限于读取。
你的感觉是错的哦
zip的目录在尾部。可以单独更新删除内部文件
实质上是新增一段新的在后面,废弃掉旧的,但是并不回收空间
这个是zip的卖点之一
--
修改:JulyClyde FROM 139.227.19.*
FROM 139.227.19.*
【 在 JulyClyde 的大作中提到: 】
: 你的感觉是错的哦
: zip的目录在尾部。可以单独更新删除内部文件
: 实质上是新增一段新的在后面,废弃掉旧的,但是并不回收空间
: ...................
这应该是个好消息,
不知到哪个python库有这个支持?
我之前, 每天交易结束,下载当天股票的tick数据,
数据是一个大的zip文件, 每一个文件是里面的一个子文件,
想增量添加到每个股票子文件, 根本做不到,每次删除会导致重新生成。
现在的方法, 只能是放到一个目录里面, 然后每个股票一个压缩包,
每天往压缩包里面追加。
--
FROM 124.126.2.*
这我就不知道了啊。。
不过从压缩率角度考虑。使用公用的字典能够提供更高的压缩率。
【 在 JulyClyde 的大作中提到: 】
: 那最后不还得顺序写入吗?
: 按说zip也可以各文件分别压缩然后顺序写入吧?应该是一样的?
: 还是说zip内各文件的压缩字典是公用的?
: ...................
--
FROM 117.28.164.*
这也太恶心了吧。如果旧的文件很大,岂不是非常浪费?
【 在 JulyClyde 的大作中提到: 】
: 你的感觉是错的哦
: zip的目录在尾部。可以单独更新删除内部文件
: 实质上是新增一段新的在后面,废弃掉旧的,但是并不回收空间
: ...................
--
FROM 117.28.164.*