0

我有以下问题:

    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 块一定有问题。

4

1 回答 1

4

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

return subprocess.check_call(query)

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

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

于 2013-08-16T07:31:16.563 回答