在Python中打开文件作为缓冲区?

时间:2014-02-05 11:10:09

标签: python pyhdf

我有一个压缩的HDF文件(HDF.Z),并希望像这样打开它:

from subprocess import Popen, PIPE
f = Popen(['zcat', 'myfile.HDF.Z'], stdout=PIPE).stdout

为了获取数据,我需要使用pyhdf:

from pyhdf.SD import SD, SDC
mydata = SD(f, SDC.READ)

但是,这会导致错误消息:

*** TypeError: coercing to Unicode: need string or buffer, file found

有没有办法打开这个文件作为缓冲区来读取它?顺便问一下:什么是缓冲区?

1 个答案:

答案 0 :(得分:1)

乍一看,我发现没办法让它进入一个开放的溪流。

您可以执行以下操作:

  • 创建一个用于解压缩文件的临时文件。
  • 将此临时文件的名称提供给SD()

另一个选项非常依赖于系统:您可以使用文件句柄并执行<​​/ p>

SD('/dev/fd/%d' % f.fileno(), SDC.READ)

这是非常依赖于平台的(仅限Linux),如果SD()任何机会mmap(),它都会失败。