try / except块中的Python变量范围

时间:2014-09-03 13:48:23

标签: python

我收到错误:

UnboundLocalError: local variable 'process' referenced before assignment

在下面的代码中 - 如何在except块中获取过程对象?

try:
    process = subprocess.Popen(list(args), 
                    shell=False, stdout=subprocess.PIPE, 
                    stderr=subprocess.PIPE)
except Exception, e:
    print process.communicate()

3 个答案:

答案 0 :(得分:4)

你调用的那一行失败了,这意味着process永远不会绑定(因为代码永远不会那么远!)。所以没有办法做到这一点。

换句话说,当您致电subprocess.Popen时会引发异常,因此无法将process设置为。

答案 1 :(得分:2)

如果引发异常,则可能无法创建进程。因此,您不能假设变量process将存在于except块中。

答案 2 :(得分:1)

您应该将一般情况“例外”更改为您实际期望的内容。 如果失败,进程在异常块中永远不会知道。 更多信息:https://docs.python.org/2/library/subprocess.html#exceptions