Python gzip 在 Ubuntu 11.04 上失败

标签 python gzip

以下函数基于the Python gzip module docs中的Python示例代码。它可以在 Ubuntu 10.04 及其默认 Python 2.6.x 上可靠运行。然而,在 Ubuntu 11.04 上,代码@ writelines() 失败。

在一台 11.04 机器上,报告失败消息'module' object has no attribute 'BufferedIOBase'。另一台 11.04 机器报告了不同的消息No module named numpy。然而,两台机器上都安装了 numpy 包。

有人知道 11.04 上缺少任何 Python 依赖项或其他问题会导致此问题吗?

def _compress(inp,out):
    import gzip
    f_out = gzip.open(out,'wb')
    f_in = open(inp,'rb')
    f_out.writelines(f_in)
    f_out.close()
    f_in.close()
    os.unlink(inp)

最佳答案

错误消息No module named numpy与此问题无关;其他一些错误导致了这种情况。要追踪这一点,请打印 sys.path 的值以查看 Python 将搜索模块的路径。 Numpy 可能已安装,但可能未安装在 sys.path 中包含的位置。言归正传,回到你的主要问题。

  1. 检查Python版本。我的猜测是 11.04 附带 2.7.x。

  2. writelines() 是一种调用二进制数据的奇怪方法。更糟糕的是,参数应该是字符串序列,而不是文件对象。请尝试使用以下代码:

    f_out.write( f_in.read() )
    
  3. 根据文件大小,这会占用大量内存。尝试使用循环:

    while True:
        data = f_in.read( 10240 )
        if not data: break
        f_out.write( data )
    

关于Python gzip 在 Ubuntu 11.04 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10496966/

相关文章:

python - 包含数字的 python 包名称是否可以接受?

Python 程序不记得变量

python - 在 Python 中将 gz 文件读取为字符串

Angular 2 : using gzip files in production

c++ - Gzip 内存压缩

http - 我如何判断 Heroku 是否正在发送 gzip 压缩响应?

python - 在字典中查找并集和交集

python - 如何在没有符号链接(symbolic link)的情况下使用 git 和 buidout 构建具有共享子应用程序的 python 项目

python - 通过 Django ORM 创建案例查询

c++ - 是否有可用于 GZIP 的测试 vector ?