Каков наилучший способ удалить временный файл? Есть ли встроенный метод для этого? Например:Как удалить tempfile в python
self.tempdir = tempfile.mkdtemp()
rm self.tempdir ?
Каков наилучший способ удалить временный файл? Есть ли встроенный метод для этого? Например:Как удалить tempfile в python
self.tempdir = tempfile.mkdtemp()
rm self.tempdir ?
Удаление временного каталога такое же, как удаление любой другой каталог: просто позвонить os.rmdir
, если вы уверены, что вы уже опустели его (и считать это ошибкой, если он не пустой), или shutil.rmtree
если нет.
Если вы используете 3.2 или новее, гораздо проще создать временный каталог с TemporaryDirectory
вместо mkdtemp
. Это позаботится обо всех случаях с крайними краями, с кросс-платформенным способом, поэтому вам не о чем беспокоиться. (Если вы создавали временный файл, как подсказывает ваш вопрос название, это еще стоит использовать API для более высокого уровня, как TemporaryFile
или NamedTemporaryFile
). Например:
with tempfile.TemporaryDirectory() as tempdir:
do_stuff_with(tempdir)
# deletes everything automatically at end of with
Или, если вы не можете поместите его в with
заявление:
def make_tempdir(self):
self.tempdir = tempfile.TemporaryDirectory()
def remove_tempdir(self):
self.tempdir.cleanup()
в самом деле, даже для 2.7 или 3.1, вы можете рассмотреть вопрос о заимствовании the source to 3.5's TemporaryDirectory
класс и использовать его самостоятельно (или ищет портировать на PyPI, если таковой существует).
хотя я проголосовал, если вы используете python 2.7 НЕ рассматривайте возможность заимствования источника до 3,5! Он использует класс finalize, который не реализован в python 2.-.- @abarnert, пожалуйста, обновите свой ответ. –
@eladsilver: финализатор не нужен, если вы всегда используете 'TemporaryDirectory' с' with'-statement. – jfs
@JFSebastian TRY IT, я использовал его в инструкции с помощью и заимствовал функцию из исходного кода и копал в нее из-за ошибок, которые я получил, она использует функции, доступные только в python 3 –
@BhargavRao: Из [документов] (https://docs.python.org/3/library/tempfile.html#tempfile.mkdtemp): «Пользователь' mkdtemp() 'отвечает за удаление временного каталог и его содержимое, когда это будет сделано ». – abarnert