【问题标题】:Python 2.7 bz2.decompress issue (cannot read the whole file)Python 2.7 bz2.decompress 问题(无法读取整个文件)
【发布时间】:2018-05-07 13:37:30
【问题描述】:

我在 python 中解压 bz2 文件时遇到了一些问题。 我在 Windows 7 和红帽中遇到了同样的问题。两者都运行 Python 2.7 Anaconda 发行版。

python -V
Python 2.7.14 :: Anaconda custom (64-bit)


C:\Users\XXXXX>python -V
Python 2.7.14 :: Anaconda, Inc.

当我读取一个 bz2 文件时,我只得到文件的前 900kBytes:

                    sftp = client.open_sftp()
                    with sftp.file(path, 'rb') as f:
                        if ".bz2" in path:
                            u = f.read()
                    client.close()


                    client.open_sftp()
                    s = bz2.decompress(u).split("\n")
                    stdin, stdout, stderr = client.exec_command('bzcat %s' % path)
                    s2 = stdout.readlines()
                    client.close()

bz2.decompress 只给我前 900000 个字节。 s2 几乎总是大于 s

无论我选择 Read hat 还是 Windows,都是如此。

有人知道吗?

谢谢

【问题讨论】:

  • 你可以试试最新的python,比如3.6
  • 谢谢,这是一个庞大的项目,我现在无法更改python版本。
  • 你检查数据了吗?至少是正确的吗? (我的意思是数据的开头)
  • 是的,bzcat 查询工作得非常好......
  • 可以在一个小示例中尝试使用最新版本,就像您展示的那样。其他解决方法是像您正在做的那样使用bzcat

标签: python compression bz2


【解决方案1】:

您可能还想检查您的 bzip 文件是否是多流文件,因为 python2 的 bz2 模块不支持解码多流 bzip 文件(它只会解码第一个流,截断所有其他流)。

另请参阅: https://docs.python.org/2/library/bz2.html#bz2.BZ2File

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-10-01
    相关资源
    最近更新 更多