Python子进程AttributeError

时间:2013-08-16 07:26:19

标签: python linux subprocess

我有以下问题:

    try:
        with subprocess.check_call(query):
            return 1
    except ValueError:
        return -1

此代码运行一个shell脚本,它到目前为止一直在运行。脚本返回0.然而我收到了这个错误:

with subprocess.check_call(query):
AttributeError: 'int' object has no attribute '__exit__'

所以我的try / except块必须有问题。

1 个答案:

答案 0 :(得分:4)

subprocess.check_call()返回一个int状态代码0一个上下文管理器。您不能在with声明中使用它。

return subprocess.check_call(query)

只需返回该调用的返回值即可。请注意,它也不会引发ValueError例外;如果进程以非零状态代码退出,它将引发CalledProcessError

也许您真正想要使用的是subprocess.call()