子流程返回退出状态1

时间:2016-05-27 07:05:45

标签: python subprocess peewee

当我通过子进程运行命令时,我得到退出状态1,没有我的打印或错误引发。

这是我的代码:

    def generate_model(self):
        if not ((self.username == None) or (self.password == None) or (self.database == None)):
            cmd = "python -m pwiz -e %s -H %s -u %s -P %s %s > %s"%(self.engine,self.host,self.username,self.password,self.database,self.database+".py")
            print subprocess.check_call(cmd)
        else:
            raise ValueError
一旦打开终端,

命令就会输入一个输入。之后,它以exit status 1

结束

当我在命令提示符下直接运行相同的命令时,它可以正常工作

1 个答案:

答案 0 :(得分:2)

subprocess.check_call()默认情况下不运行shell,因此重定向运算符>不起作用。要重定向标准输出,请改为传递stdout参数:

with open(filename, 'wb', 0) as file:
    check_call([sys.executable, '-m', 'pwiz', '-e', ...], stdout=file)

相关:Python subprocess.check_output(args) fails, while args executed via Windows command line work OK