首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写入成功后删除现有文件

写入成功后删除现有文件
EN

Stack Overflow用户
提问于 2019-11-13 23:25:54
回答 2查看 45关注 0票数 0

我正在python脚本中执行每日数据库转储,我正在寻找最有效的python方法,以便仅在最近的文件成功写入后才删除当前文件,即仅在backup-13-11-2019成功创建后才删除backup-12-11-2019.sql

EN

回答 2

Stack Overflow用户

发布于 2019-11-14 18:00:18

您可以使用try:...except:...esle:作为以下代码。

代码语言:javascript
复制
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,它将删除以前的备份文件

最好的尊重

票数 1
EN

Stack Overflow用户

发布于 2019-11-14 00:14:41

来自DBA StackExchange

代码语言:javascript
复制
    pg_dumpall -U pg_user > /tmp/tmp.txt
    DUMP_STATUS=$?
    echo "Dump status: $DUMP_STATUS" > /tmp/status.txt

SO: Get return value

代码语言:javascript
复制
    subprocess.check_output([SCRIPT, "-d", date], shell=True).

我们能够想出一些东西来运行你想要运行的命令,同时检查它的返回值。

代码语言:javascript
复制
    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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58840340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档