2011-10-06 10 views
5

मैं कई एचडीएफ 5 फाइलों में डेटा को संसाधित करने के लिए एनथॉट पायथन के 64-बिट संस्करण का उपयोग कर रहा हूं। मैं 64-बिट विंडोज़ पर h5py संस्करण 1.3.1 (एचडीएफ 5 1.8.4) का उपयोग कर रहा हूं।पाइथन एचडीएफ 5 एच 5 पीई कई फाइलें खोलने के मुद्दे

मेरे पास एक ऐसा ऑब्जेक्ट है जो मेरे विशिष्ट डेटा विरासत में सुविधाजनक इंटरफ़ेस प्रदान करता है, लेकिन h5py.File (fname, 'r') का परीक्षण स्वतंत्र रूप से एक ही परिणाम उत्पन्न करता है। मैं एक लंबी सूची (एक समय में ~ 100 फाइलें) के माध्यम से पुनरावृत्त कर रहा हूं और फ़ाइलों से जानकारी के विशिष्ट टुकड़ों को खींचने का प्रयास कर रहा हूं। मेरी समस्या यह है कि मुझे एक ही जानकारी कई फाइलों से मिल रही है! मेरा पाश कुछ ऐसा दिखता है:

files = glob(r'path\*.h5') 
out_csv = csv.writer(open('output_file.csv', 'rb')) 

for filename in files: 
    handle = hdf5.File(filename, 'r') 
    data = extract_data_from_handle(handle) 
    for row in data: 
    out_csv.writerow((filename,) +row) 

जब मैं एचडीएफव्यू जैसे कुछ का उपयोग कर फ़ाइलों का निरीक्षण करता हूं, तो मुझे पता है कि आंतरिक अलग हैं। हालांकि, मुझे लगता है कि सीएसवी संकेत मिलता है कि सभी फाइलों में एक ही डेटा होता है। क्या किसी ने इस व्यवहार को पहले देखा है? कोई भी सुझाव जहां मैं इस मुद्दे को डीबग करने के लिए जा सकता हूं?

उत्तर

4

मैंने निष्कर्ष निकाला है कि यह Perplexing assignment behavior with h5py object as instance variable का एक अजीब अभिव्यक्ति है। मैंने अपना कोड फिर से लिखा है ताकि प्रत्येक फ़ाइल को फ़ंक्शन कॉल के भीतर संभाला जा सके और चर का पुन: उपयोग नहीं किया जा सके। इस दृष्टिकोण का उपयोग करके, मुझे वही अजीब व्यवहार नहीं दिख रहा है और ऐसा लगता है कि यह बहुत बेहतर काम करता है। स्पष्टता के लिए, समाधान अधिक दिखता है:

files = glob(r'path\*.h5') 
out_csv = csv.writer(open('output_file.csv', 'rb')) 

def extract_data_from_filename(filename): 
    return extract_data_from_handle(hdf5.File(filename, 'r')) 

for filename in files: 
    data = extract_data_from_filename(filename) 
    for row in data: 
    out_csv.writerow((filename,) +row) 
संबंधित मुद्दे