2017-11-29 27 views
1

I는 다음의 구조를 가지는 파일을 가지고는 그룹 h5py하는 덧붙이

  • 시간 1
  • 인덱스 1
  • 값 X
  • 값 y
  • 시간 1
  • 인덱스 2
  • 값 x
  • 값 y
  • 시간이
  • 인덱스 1
  • ...

내가 별도의 그룹으로 각 인덱스의 값을 h5py를 사용하여 HDF5 형식으로 파일을 변환하고, 분류하고 싶습니다.

내 접근 방식은

f = h5py.File(filename1,'a') 
trajfile = open(filename2, 'rb') 

    for i in range(length_of_filw): 
     time = struct.unpack('>d', filename2.read(8))[0] 
     index = struct.unpack('>i', filename2.read(4))[0]  
     x = struct.unpack('>d', filename2.read(8))[0] 
     y = struct.unpack('>d', filename2.read(8))[0] 

     f.create_dataset('/'+str(index), data=[time,x,y,z]) 

이다 그러나이 방법으로 나는 그룹에 추가 할 수 없습니다입니다 (난 단지 ... 한 번 각 그룹에 쓸 수 있어요). 오류 메시지는 "RuntimeError : 링크를 만들 수 없습니다 (이름이 이미 있습니다)"입니다.

그룹에 추가 할 수있는 방법이 있습니까?

답변

1

데이터 세트에 원하는만큼 여러 번 쓸 수 있습니다. 동일한 이름의 데이터 세트를 두 번 사용할 수 없습니다. 이것은 당신이 받고있는 오류입니다. 데이터 셋을 생성하는 동시에 내부에 데이터를 넣는 중입니다. 다른 데이터를 쓰려면 용량을 충분히 수용 할 수 있어야합니다.

어쨌든, 나는 당신이 혼란스러운 그룹과 데이터 세트라고 생각합니다. 그룹은 예 : 하지만 자신의 핸들을 통해 참조 할 수 있습니다 -

dst = f.create_dataset('foo',shape=(100,)) # this create the dataset 'foo', with enough space for 100 elements. 

는 한 번만 그룹과 데이터 세트를 생성해야합니다

grp = f.create_group('bar') # this create the group '/bar' 

는 당신은 당신이 말했듯이 생성하는 데이터 세트에서 데이터 세트를 저장할 (grp와 dst)를 써서 글씨를 쓰십시오.

먼저 파일을 한 번 살펴보고 'shape'매개 변수를 사용하여 원하는 그룹 및 데이터 세트를 만들고 크기를 적절히 조정 한 다음 실제 데이터로 데이터 세트를 채우는 것이 좋습니다.