标签: bzip

仅解压缩特定的bzip2块

假设我有一个bzip2文件(超过5GB),我只想解压缩块#x,因为我的数据就在哪里(块每次都不同).我该怎么做?

我想要制作一个所有块所在的索引,然后从文件中剪切我需要的块并将bzip2recover应用于它.

我还考虑过一次压缩1MB,然后将其附加到文件(并记录位置),并在需要时简单地抓取文件,但我宁愿保持原始的bzip2文件完好无损.

我的首选语言是Ruby,但任何语言的解决方案都很好(只要我理解原理).

compression archive bzip bzip2

10
推荐指数
1
解决办法
1755
查看次数

是否有可能并行化bz2的减压?

我使用pythons bz2模块生成(并压缩)一个大的jsonl文件(bzip2压缩17GB).

但是,当我稍后尝试使用pbzip2解压缩时,它似乎只使用一个 CPU核心进行解压缩,这非常慢.

当我用pbzip2压缩它时,它可以在解压缩时利用多个核心.有没有办法在pthon中以pbzip2兼容格式压缩?

import bz2,sys
from Queue import Empty
#...
compressor = bz2.BZ2Compressor(9)
f = open(path, 'a')

    try:
        while 1:
            m = queue.get(True, 1*60)
            f.write(compressor.compress(m+"\n"))
    except Empty, e:
        pass
    except Exception as e:
        traceback.print_exc()
    finally:
        sys.stderr.write("flushing")
        f.write(compressor.flush())
        f.close()
Run Code Online (Sandbox Code Playgroud)

python multiprocessing bzip bzip2 python-2.7

5
推荐指数
1
解决办法
488
查看次数

解析大型压缩xml文件,python

file  = BZ2File(SOME_FILE_PATH)
p = xml.parsers.expat.ParserCreate()
p.Parse(file)
Run Code Online (Sandbox Code Playgroud)

这是试图解析用bz2压缩的xml文件的代码.不幸的是它失败了一条消息:

TypeError: Parse() argument 1 must be string or read-only buffer, not bz2.BZ2File

有没有办法解析压缩的bz2 xml文件?

注意:p.Parse(file.read())这里不是一个选项.我想解析一个比可用内存大的文件,所以我需要一个流.

python data-compression bzip

2
推荐指数
1
解决办法
2248
查看次数

Open3.popen3 函数打开 bz、gz 和 txt 文件时出现“没有此类文件或目录”或“未打开读取”错误?

我正在尝试编写一个实用程序函数来打开三种不同类型的文件:.bz2、.gz 和.txt。我不能只是使用File.read,因为它给我压缩文件带来了垃圾。我正在尝试使用,Open3.popen3以便可以给它一个不同的命令,但我收到以下代码的“没有这样的文件或目录”错误:

def file_info(file)
  cmd = ''
  if file.match("bz2") then
    cmd = "bzcat #{file}"# | head -20"
  elsif file.match("gz") then
    cmd = "gunzip -c #{file}"
  else
    cmd = "cat #{file}"
  end

  puts "opening file #{file}"
  Open3.popen3("#{cmd}", "r+") { |stdin, stdout, stderr|
    puts "stdin #{stdin.inspect}"
    stdin.read {|line|
      puts "line is #{line}"
      if line.match('^#') then
      else
        break
      end
    }
  }
end


> No such file or directory - cat /tmp/test.txt
Run Code Online (Sandbox Code Playgroud)

该文件确实存在。我尝试使用cmd而不是#{cmd}popen3 cmd. …

ruby gzip ruby-on-rails bzip

2
推荐指数
1
解决办法
2160
查看次数

解压缩tbz存档中的单个文件

我有以下存档目录:

itunes20140618.tbz
Run Code Online (Sandbox Code Playgroud)

我想从中提取单个文件:

itunes20140618/video
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

到目前为止,我正在做

$ bzip2 -d /tmp/itunes20140618.tbz 
Run Code Online (Sandbox Code Playgroud)

但它似乎创建了一切tar目录.我如何只提取单个视频文件?

unix linux zip tar bzip

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

在 Python 中通过 TCP 套接字发送 gzip 压缩数据

我正在用 Python 创建一个 HTTP 服务器,没有任何用于学习目的的 HTTP 库。现在它可以很好地提供静态文件。

我提供文件的方式是通过这段代码:

with open(self.filename, 'rb') as f:
    src = f.read()
socket.sendall(src)
Run Code Online (Sandbox Code Playgroud)

但是,我想通过发送压缩数据而不是未压缩数据来稍微优化其性能。我知道我的浏览器 (Chrome) 接受压缩数据,因为它在标题中告诉我

Accept-Encoding: gzip, deflate, sdch
Run Code Online (Sandbox Code Playgroud)

所以,我把我的代码改成了这个

with open(self.filename, 'rb') as f:
    src = zlib.compress(f.read())
socket.sendall(src)
Run Code Online (Sandbox Code Playgroud)

但这只是输出垃圾。我究竟做错了什么?

python sockets get http bzip

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

加密文件以确保安全性

其实我有一个档案.我在linux环境下工作.为了安全起见,我需要提供一些密码来加密该文件.操作可能像zip,tar任何压缩.当我提取文件它应该问我密码,然后它应该被提取

提前致谢

security encryption zip tar bzip

0
推荐指数
1
解决办法
222
查看次数