我有以下问题:
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块必须有问题。
答案 0 :(得分:4)
subprocess.check_call()
返回一个int状态代码0
,不一个上下文管理器。您不能在with
声明中使用它。
return subprocess.check_call(query)
只需返回该调用的返回值即可。请注意,它也不会引发ValueError
例外;如果进程以非零状态代码退出,它将引发CalledProcessError
。
也许您真正想要使用的是subprocess.call()
。