2012-01-06 3 views
2

Я пишу библиотеку Python, которая должна кэшировать удаленные данные на локальной машине.Python - Где библиотека хранит временные файлы?

Я хочу, чтобы библиотека не загрязняла ОС и размещала временные файлы там, где они не принадлежат. Использовать временные папки по умолчанию для ОС по-умолчанию немного устарели, так как я хотел бы использовать один способ самостоятельной работы с ОС.

Будет ли хранить кешированные файлы в папке пакета? Имеется ли в папке Python папка для временных файлов?

Помощь будет замечательной! :)

+1

Если кэш должен выжить перезагружается, то файлы не являются временными. Вместо этого вы можете посмотреть http://pypi.python.org/pypi/appdirs для кросс-платформенной функции 'user_cache_dir'. –

ответ

7

Рассмотрите возможность использования tempfile см http://docs.python.org/library/tempfile.html

+0

Сохранятся ли временные файлы после запуска кода python? – RadiantHex

+0

Да, это будет. Но вам не нужно об этом беспокоиться, так как все временные файлы будут удалены (специфичные для операционной системы пользователя, при перезагрузке или с интервалом). И каждый раз, когда вы его вызываете, он даст вам другой отдельный путь к файлу, никаких столкновений не будет. – qiao

+0

, если вы создадите объект tempfile.TemporaryFile, он будет автоматически уничтожен для вас, когда он будет закрыт (как явно, так и неявно). Если вы используете tempfile.mkstemp, вы будете нести ответственность за удаление временного файла. Если вы используете tempfile.mkdtemp для создания временного каталога для хранения всего вашего файла, вы несете ответственность за удаление этого каталога. – ftartaggia

1

Ответ по умолчанию является использование tempfile; если вы используете какой-либо другой кросс-платформенный инструментарий, могут быть другие абстрактные способы достижения того же, например, в PyQt/PySide у вас есть QtCore.QTemporaryFile.

1

рассмотреть также дает возможность пользователю определить, как ваша библиотека должна обрабатывать временные файлы или где хранить их