2014-02-05 4 views
0

내가 압축 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 

이 파일을 읽을 버퍼로 열 수 있습니까? Btw : 버퍼 란 무엇입니까?

+0

"myfile.hdf"는 "myfile.hdf.z"가 아니어야합니까? – hjpotter92

+0

@ hjpotter92 예 질문에서 변경했습니다. – HyperCube

+0

@perreal 어떻게 파일의 내용을 제공합니까? – HyperCube

답변

1

한눈에 오픈 스트림에 액세스 할 수있는 방법이 없습니다.

는 다음과 같은 작업을 수행 할 수 있습니다

  • 는 파일을 압축을 풀고 임시 파일을 만듭니다.
  • 임시 파일의 이름을 SD()으로 지정하십시오.

또 다른 옵션은 매우 시스템에 따라 달라집니다 SD()가 혹시 mmap() 않는 경우, 파일 핸들을이 매우 플랫폼에 따라 (Linux 전용)입니다

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

비트를하고 수를 실패 할 것이다.

+0

파일의 임시 압축 풀기가 작동하지만 시간이 오래 걸릴 수 있습니다 (이 작업을 수백 개의 파일에서 수행한다는 점을 고려할 때). – HyperCube