python代码是按顺序执行的

use*_*r22 0 python diff subprocess

我正在创建一个文件,然后在它上面做差异.

我想对上一步中创建的文件执行diff,但是我得到文件不存在的错误.

这是我的代码

os.popen("mysqldump --login-path=server1_mysql -e --opt --skip-lock-tables  --skip-extended-insert -c %s > %s.sql" % (database, filename))
os.popen("diff %s %s > %s" % (weekly, filename, filename+".PATCH"))
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 5

os.popen已弃用.使用子进程模块.subprocess.call将阻止主进程,直到命令完成.如果retval在执行mysqldump命令时出错,您应该检查返回码.在这种情况下,您无法继续diff:

import subprocess
import shlex
with open("{f}.sql".format(f=filename), 'w') as fout:
    retval = subprocess.call(
        shlex.split(
            """mysqldump --login-path=server1_mysql -e --opt --skip-lock-tables
            --skip-extended-insert -c %s""" % (database, )),
        stdout=fout)

if not retval == 0:
    raise Exception('Error executing command: {r}'.format(r=retval))
else:
    with open("{f}.PATCH".format(f=filename), 'w') as fout:
        retval = subprocess.call(
            shlex.split("diff {w} {f}".format(w=weekly, f=filename)),
            stdout=fout)
Run Code Online (Sandbox Code Playgroud)