我正在将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”的方式吗?
非常感谢
答案 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")
这不会引发错误,您可以做一些合理的默认操作。