Удалить существующий файл после успешной записи
Я выполняю ежедневный дамп базы данных в скрипте 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
он удалит предыдущий файл резервной копии
С наилучшими пожеланиями
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")