繁体   English   中英

将 Perl 翻译成 Python:要么死,要么死

[英]Translate Perl to Python: do this or die

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

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

我可以(希望)看到这一行的作用,或者将变量“路径”设置为环境变量“SOME_NAME”,或者失败,然后向用户打印一条错误消息。 (旁注:有人知道如何让搜索引擎搜索“||”等特殊字符吗?)

我尝试使用“pythonic”方式(更容易请求宽恕而不是许可)来实现它:

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

但这似乎相当麻烦,尤其是当我为 3 个不同的环境变量执行此操作时。

如果有更好的实现有什么想法,或者你会说这是 go 的“pythonic”方式吗?

非常感谢

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 块中。

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

path = os.environ["SOME_NAME"]

只会自行引发 KeyError 异常,默认行为是退出未捕获的异常。 回溯会告诉你什么和在哪里。

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

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

这不会引发错误,您可能会做一些明智的事情作为默认操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM