【发布时间】:2009-10-23 09:33:58
【问题描述】:
根据a section中的this presumably accurate book,
管道的一个常见用途是读取 增量压缩文件;那 是,没有解压缩整个 一下子。以下函数 将压缩文件的名称作为 一个参数并返回一个管道 使用 gunzip 解压 内容:
def open_gunzip(filename): cmd = 'gunzip -c ' + filename fp = os.popen(cmd) return fp如果你从 fp 中读取一行 时间,您永远不必存储 内存中或上的未压缩文件 磁盘。
也许我只是解释错了,但我不明白这怎么可能。 Python 无法在吐出结果的过程中暂停 gunzip,对吧?我假设 gunzip 在继续输出更多行之前读取一行输出之前不会阻塞,因此必须有一些缓冲区捕获所有这些(无论是在 Python 解释器中还是在操作系统中,无论是在内存中还是在磁盘上),这意味着未压缩的文件被完整地存储在某处...对吗?
【问题讨论】:
-
永远不要使用
os.popen。它已被弃用。请改用subprocess模块。