相关疑难解决方法(0)

压缩格式对档案内的随机访问有很好的支持?

这与之前的问题类似,但那里的答案不能满足我的需求,我的问题略有不同:

我目前对一些包含排序数据的非常大的文件使用gzip压缩.当文件未被压缩时,二进制搜索是支持在排序数据中寻找位置的便捷有效方式.

但是当文件被压缩时,事情变得棘手.我最近发现了zlibZ_FULL_FLUSH选项,可以在压缩过程中使用它在压缩输出中插入"同步点"(inflateSync()然后可以从文件中的各个点开始读取).这是可以的,虽然我已经拥有的文件必须重新压缩才能添加此功能(奇怪的gzip是没有这个选项,但如果必须,我愿意编写自己的压缩程序).

一个来源看来,即使Z_FULL_FLUSH不是一个完美的解决方案......不仅所有gzip档案都不支持它,而且在档案中检测同步点的想法可能会产生误报(或者与同步的幻数重合)点,或由于Z_SYNC_FLUSH也产生同步点但它们不能用于随机访问的事实.

有更好的解决方案吗?如果可能的话,我想避免使用辅助文件进行索引,并且对准随机访问的显式默认支持将是有帮助的(即使它是大粒度的 - 就像能够以每10 MB的间隔开始读取一样).是否有另一种压缩格式比gzip更好地支持随机读取?

编辑:正如我所提到的,我希望在压缩数据中进行二进制搜索.我不需要寻找特定的(未压缩的)位置 - 只是在压缩文件中寻找一些粗粒度.我只是希望能够支持诸如"将数据从大约50%(25%,12.5%等)开始压缩到此压缩文件中".

compression gzip zlib archive random-access

54
推荐指数
6
解决办法
2万
查看次数

在Python中的zip文件中搜索()一个文件而不将其传递给内存

无论如何要在一个zip文件中创建一个可以在Python中查找的文件,而无需将其读入内存?

我尝试了明显的程序,但由于文件不可搜索,我收到错误:

In [74]: inputZipFile = zipfile.ZipFile("linear_g_LAN2A_F_3keV_1MeV_30_small.zip", 'r')

In [76]: inputCSVFile = inputZipFile.open(inputZipFile.namelist()[0], 'r')   

In [77]: inputCSVFile
Out[77]: <zipfile.ZipExtFile at 0x102f5fad0>

In [78]: inputCSVFile.se
inputCSVFile.seek      inputCSVFile.seekable  

In [78]: inputCSVFile.seek(0)
---------------------------------------------------------------------------
UnsupportedOperation                      Traceback (most recent call last)
<ipython-input-78-f1f9795b3d55> in <module>()
----> 1 inputCSVFile.seek(0)

UnsupportedOperation: seek
Run Code Online (Sandbox Code Playgroud)

python zip zipfile seek

9
推荐指数
1
解决办法
3956
查看次数

在现代Windows上"寻求"可靠吗?

手册页seek在R:

不鼓励在Windows上使用搜索.我们在Windows文件定位实现中发现了很多错误,建议用户自行承担使用它的风险,并要求不要浪费R开发人员的时间来处理有关Windows缺陷的错误报告.

对于具有NTFS文件系统的Windows的现代版本,这仍然适用吗?

windows winapi r

3
推荐指数
1
解决办法
114
查看次数

标签 统计

archive ×1

compression ×1

gzip ×1

python ×1

r ×1

random-access ×1

seek ×1

winapi ×1

windows ×1

zip ×1

zipfile ×1

zlib ×1