python subprocess mysql,python – 使用subprocess.call和mysqldump

我已经用windows编写了多年的脚本,并且在过去的几周里才开始将python作为替代品.我正在尝试编写一个本机python脚本来使用mysqldump备份mysql数据库.我通常使用命令行管道输出>没有问题.

我看到subprocess.popen和shell = True有很多答案,同样我看到很多语句说我应该避免使用shell = True

所以我试图获取以下代码将我的stdout重定向到一个文件,都没有成功

sys.stdout=open("mysqldump.txt",'w')

print("testing line1")

subprocess.check_output(["mysqldump", "-u", "usernmae", "-ppassword", "-h", "dbserver_name", database_name])

如果我注释掉sys.sdout行,我会看到sqldump输出到我的屏幕,所以我知道我的语法正确.我添加了print语句,可以看到它被写入文件mysqldump.txt.但是当完全运行时,屏幕或文件没有转储

有任何想法吗?我试图避免使用shell解决方案

解决方法:

您尝试执行的操作不起作用,因为修改sys.stdout只会影响Python级语句(如print),而不会影响C的低级写入,尤其不会影响外部程序执行的操作.您想告诉子流程创建管道,就像使用>一样.重定向,如下所示:

with open("mysqldump.txt",'w') as out:

subprocess.check_call(["mysqldump", "-u", "usernmae", "-ppassword",

"-h", "dbserver_name", database_name],

stdout=out)

标签:python,subprocess,mysqldump

来源: https://codeday.me/bug/20190612/1225333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值