Удалить существующий файл после успешной записи

Я выполняю ежедневный дамп базы данных в скрипте python, и я ищу наиболее эффективный для python способ удалить текущий файл только после того, как последний был успешно записан, то есть удалить backup-12-11-2019.sql только после резервного копирования -13-11-2019 создан успешно

2 ответа

Вы можете использовать try:...except:...esle: как следующий код.

import datetime
import os
now = datetime.datetime.utcnow()
try:
    pg_dumpall('-h', DB_HOST, '-U', DB_USERNAME, '-p', DB_PORT, _out=BACKUP_FOLDER + 'backup-' + str(now.day) + '-' + str(now.month) + '-' + str(now.year) + '.sql')
except Exception as e:
    print(e)
else:
    previous_day = now - datetime.timedelta(days=1)
    os.remove(BACKUP_FOLDER + 'backup-' + str(now.day - 1) + '-' + str(now.month) + '-' + str(now.year) + '.sql')

Если pg_dumpall не поднимает и Exception он удалит предыдущий файл резервной копии

С наилучшими пожеланиями

От DBA StackExchange

    pg_dumpall -U pg_user > /tmp/tmp.txt
    DUMP_STATUS=$?
    echo "Dump status: $DUMP_STATUS" > /tmp/status.txt

И ТАК: получить возвращаемое значение

    subprocess.check_output([SCRIPT, "-d", date], shell=True).

Мы можем придумать что-то, что будет запускать команду, которую вы хотите запустить, и одновременно проверять ее возвращаемое значение.

    output = subprocess.check_output(['pg_dumpall', '-h', DB_HOST, '-U', DB_USERNAME, '-p', DB_PORT], stdout=outfile)
    if output == 0:
        print("Success")
        os.remove(oldfile)
    else:
        print("Failure")
Другие вопросы по тегам