Триггерный код при завершении программы - PullRequest
1 голос
/ 27 марта 2011

Мой скрипт создает файлы для хранения данных во время его выполнения, я хотел бы удалить эти файлы по завершении моей программы. Это возможно?

Я НЕ хочу предложений обойти ... типа "не создавать файлы".

Очень ценится!

Ответы [ 4 ]

7 голосов
/ 27 марта 2011

А как насчет os-модуля Python? Есть метод "remove ()", чтобы делать то, что вы хотите.

См. Документацию

Для обработки выхода из вашей программы вы можете использовать atexit module.

Пример:

import os

def delete_file(name):
    os.remove(name)

import atexit
atexit.register(delete_file, file_path)

file_path - это файл для удаления.

6 голосов
/ 27 марта 2011

Вы хотите обработчики atexit () .

По своему опыту, возможно, из-за ошибок в интерпретаторе (?), Я нашел их очень сложными в использовании, так как иногда ресурсы, которые мне нужно было использовать, уже были очищены, включая модули, которые мне нужно было использовать.

1 голос
/ 27 марта 2011

Вот более простой метод, который, кажется, работает правильно.Я не использовал его в реальном коде, поэтому могут быть недостатки, о которых я не знаю.Критика от более опытных Pythonistas приветствуется.

import sys

def main():
    print('main')
    sys.exit(0)

try:
    main()
finally:
    print('cleanup code goes here')
1 голос
/ 27 марта 2011

Python предлагает поддержку tempfiles (см. Модуль с тем же именем). Они не могут быть гарантированно удалены после завершения работы программы, но ОС знает, что они могут быть удалены без уведомления в любое время (например, в некоторых Unix-системах каждый вечер).

...