Укроп удаляет объект при использовании "загрузки"

У меня ошибка, которая сводит меня с ума. Я генерирую некоторые данные численного моделирования sim_data.dill и сохранить его в каталог на моем компьютере, используя

with open(os.path.join(original_directory, 'sim_data.dill'), 'w' as f:
    dill.dump(outputs, f)

Эти данные составляют около 1 Гб и на их создание требуется некоторое время. Теперь я скопировал этот файл из original_directory в new_directory когда я пытаюсь загрузить его из другой программы, используя

simfile  = '/new_directory/sim_data.dill'
with open(simfile, 'r') as f:
    outputs = dill.load(f)

Происходит одно из двух:

  1. программа говорит, что файл отсутствует с UnpicklingError: [Errno 2] No such file or directory: .../original_directory/sim_data.dill, Это означает, что укроп кладет в original_directory в метаданных файла и отказывается открывать его при перемещении файла; действительно ужасающее поведение.
  2. когда я копирую файл обратно в new_directory, пытаясь открыть это дает EOFError и укроп изменяет файл на ноль байтов, по существу удаляя его. Это еще хуже.

Я могу читать файл очень хорошо, используя стандартный with open(simfile, 'r') as f; print f.readlines(), но, очевидно, это не помогает при попытке восстановить внутреннюю структуру классов файлов.

1 ответ

Решение

Видимо это нормальное поведение для dill; посмотри пожалуйста:

https://github.com/uqfoundation/dill/issues/296

Перефразируя: местоположение файла является частью дескриптора файла, который нужно выбрать, поэтому удаление этого без этой информации невозможно. Это означает, по-видимому, что если вы сохраните .dill файл в одном месте, переместите файл вручную (например, в более удобный каталог), а затем попробуйте открыть его снова, он не будет работать.

С точки зрения вопроса удаления автор поста выше рекомендует использовать fmode=FMODE_PRESERVEDATA или один из других файловых режимов, перечисленных по адресу https://github.com/matsjoyce/dill/blob/087c00899ef55f31d36e7aee51a958b17daf8c91/dill/dill.py

Другие вопросы по тегам