2016-06-05 5 views
0

Я очень смущен этим, у меня есть два сценария, запущенных с того же сервера Notebook. У меня есть HDFStore в той же папке, однако для одного скрипта он выглядит пустым, а для другого - нет. Вот тот же код может работать в обоих ноутбуках:Pandas HDFStore странное поведение

import os 
os.getcwd() 

Return NB 1: 'E: \ DoingDataScience \ Определить \ Scripts'

Return NB 2: 'E: \ DoingDataScience \ Определить \ Scripts'

store = pd.HDFStore('data_test.h5') 
store.items 

Return NB 1:

<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'> 
File path: data_test.h5 
/test_database   frame  (shape->[3,5])> 

Return NB 2:

<bound method HDFStore.items of <class 'pandas.io.pytables.HDFStore'> 
File path: data_test.h5 
Empty> 

Все обстоятельства выглядят одинаково. Он отслеживает источник Pandas DF? Я подумал, что это возможно из-за того, что файл уже открывается NB 1, потому что NB 1 создал его. Однако убийство NB 1 и перезапуск NB 2 тоже ничего не сделали.

EDIT: Добавлена ​​os.stats:

NB 1 и NB 2 как:

nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, 
st_uid=0, st_gid=0, st_size=1311400L, st_atime=1465072325L, 
st_mtime=1465149771L, st_ctime=1465072325L) 

Update: Теперь после перезагрузки я получаю новую ошибку:

HDF5ExtError: ошибка HDF5 назад след

Файл "C: \ aroot \ работа \ hdf5-1.8.15-Patch1 \ SRC \ H5F.c", строка 604, в H5Fopen не удалось открыть файл файл «C: \ а root \ work \ hdf5-1.8.15-patch1 \ src \ H5Fint.c ", строка 1085, в H5F_open невозможно прочитать суперблок Файл" C: \ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5Fsuper .c ", строка 294, в H5F_super_read не удалось загрузить суперблок Файл" C: \ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5AC.c ", строка 1320, в H5AC_protect Ошибка H5C_protect(). Файл «C: \ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5C.c», строка 3574, в H5C_protect не может загрузить запись Файл «C: \ aroot \ work \ hdf5-1.8. 15-patch1 \ src \ H5C.c ", строка 7954, в H5C_load_entry не удалось загрузить запись Файл" C: \ aroot \ work \ hdf5-1.8.15-patch1 \ src \ H5Fsuper_cache.c ", строка 476, в H5F_sblock_load усеченный файл: ВФ = 800, sblock-> base_addr = 0, stored_eoa = 1181448

Конец ошибки HDF5 обратной трассировки

Невозможно открыть/создать файл '' data_test.h5

+0

Можете ли вы распечатать местоположение файла HDStore в каждом случае? Вы уверены, что это действительно тот же файл? – BrenBarn

+0

Как я могу это получить? store.filename просто возвращает имя, а не путь –

+0

вы можете опубликовать вывод 'os.stat ('data_test.h5')' из обеих ноутбуков? Файл не должен блокироваться, когда он открыт в одном NB – MaxU

ответ

2

Большинство probabl у вы написали свои данные

/test_database   frame  (shape->[3,5])> 

в сессии nb1 и не закрывали store (что позволит сэкономить и вымывать изменения в файл/диска)

Итак, когда вы открыли файл h5 в NB2, он еще не покраснел и, следовательно, был пуст.

+0

Как сохранить и сбросить изменения на диск? У меня есть аналогичная ошибка, когда я использую 'df.to_hdf (путь, ...)'? –

Смежные вопросы