将Perl转换为Python:执行此操作或死亡

时间:2011-08-12 11:12:55

标签: python perl

我正在将Perl(其中我知之甚少)脚本移动到python。

$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n";

我可以(希望)看到这一行做了什么,要么将变量'path'设置为环境变量'SOME_NAME',要么失败,然后向用户输出错误消息。 (附注:任何人都知道如何让搜索引擎搜索像'||'这样的特殊字符?)

我试图以“pythonic”的方式实现它(比请求更容易请求宽恕):

try:
    path = os.environ['SOME_NAME']
except KeyError,e:
    print "SOME_NAME ENVIRONMENT VARIABLE NOT FOUND\n"
    raise e

但这看起来相当麻烦,特别是因为我正在为3个不同的环境变量做这件事。

任何想法是否有更好的实施,或者你会说这是“pythonic”的方式吗?

非常感谢

2 个答案:

答案 0 :(得分:11)

try:
    path = os.environ['SOME_NAME']
    var2 = os.environ['VAR2']
    var3 = os.environ['VAR3']
    var4 = os.environ['VAR4']
except KeyError,e:
    print "Not found: ", e

您可以将多个语句放入try块中。

答案 1 :(得分:6)

你所拥有的实际上是非常常见的习语,可以说是首选的模式。或者你只是让正常的异常通过而不打印任何额外的东西。 Python本身具有相同的效果。所以,

path = os.environ["SOME_NAME"]

只会自行引发KeyError异常,默认行为是在未捕获的异常上退出。回溯将显示您的位置和位置。

但是,如果可能的话,您也可以提供默认值。

path = os.environ.get("SOME_NAME", "/default/value")

这不会引发错误,您可以做一些合理的默认操作。