2013-04-09 29 views
5

Tôi hiện đang làm việc trên một dự án liên quan đến việc nén các bộ dữ liệu HDF5 và gần đây đã bắt đầu sử dụng h5py. Tôi đã làm theo các hướng dẫn cơ bản và có thể mở, tạo và nén một tệp trong khi nó được tạo. Tuy nhiên, tôi đã không thành công khi nói đến nén một tập tin hiện có (đó là mục đích của công việc của tôi).Nén tệp hiện có bằng h5py

Tôi đã thử mở tệp bằng cách sử dụng 'r +' và sau đó nén các tập dữ liệu đã chunked nhưng kích thước tệp vẫn giữ nguyên.

Bất kỳ đề xuất nào về việc sử dụng lệnh nào hoặc tôi đang làm gì sai?

Trả lời

3

Nén rất dễ sử dụng trong h5py. Xem các hướng dẫn Wiki HowToCompression. Về cơ bản, nó sẽ là một cái gì đó như:

ds = myfile.create_dataset('ds', shape, dtype, compression='lzf') 

Ngoài ra còn có một số vấn đề với cách bạn chọn đoạn kích thước để tối ưu hóa kích thước tập tin/truy cập, hãy xem hướng dẫn Nén tôi liên kết với.

Tôi không nhớ tính năng nén, nếu có, được bật theo mặc định.

+1

Có, tôi đã thử chính xác điều đó, tuy nhiên nó dường như chỉ hoạt động đối với tôi trong khi tạo một tệp mới ví dụ. Tôi có thể tạo một tệp mới có kích thước chunk (100,100) có kích hoạt tính năng nén gzip/szip/lzf. Khi tôi tải một tệp hiện có, cách duy nhất nén có vẻ thực sự hoạt động là nếu nội dung của tệp gốc bị ghi đè và tệp mới được tạo (có cùng tên của tệp gốc). Khi tôi tải một tập tin, tạo một tập dữ liệu chunked, cho phép nén và sau đó đóng tập tin, có vẻ như không có hiệu lực hoặc thay đổi nào cả. Tôi có cảm giác tôi đang bỏ lỡ một bước, không chắc chắn nó là gì. – kromegaman

+0

@kromegaman nén và kích thước chunk là hướng dẫn về cách tệp được ghi vào đĩa. Tôi không nghĩ rằng đó là một cái gì đó bạn có thể thay đổi cho một tập tin hiện có, vì nó đã được viết. Tôi nghĩ cách duy nhất để thay đổi nén/khối là viết một tệp mới với các cài đặt đó. – Bitwise

+0

Vâng, tôi càng sử dụng nó càng có vẻ như vậy. Tôi nghĩ rằng tôi sẽ phải tạo một tập tin mới và tập dữ liệu, sao chép dữ liệu từ tập tin hiện có vào một tập tin mới và sau đó nén tập tin mới khi tôi tạo nó. Tuy nhiên, cảm ơn rất nhiều vì sự giúp đỡ! – kromegaman

Các vấn đề liên quan