我正在将Perl(其中我知之甚少)脚本移动到python.
$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n";
Run Code Online (Sandbox Code Playgroud)
我可以(希望)看到这一行做了什么,要么将变量'path'设置为环境变量'SOME_NAME',要么失败,然后向用户输出错误消息.(附注:任何人都知道如何让搜索引擎搜索像'||'这样的特殊字符?)
我试图以"pythonic"的方式实现它(比请求更容易请求宽恕)使用:
try:
path = os.environ['SOME_NAME']
except KeyError,e:
print "SOME_NAME ENVIRONMENT VARIABLE NOT FOUND\n"
raise e
Run Code Online (Sandbox Code Playgroud)
但这看起来相当麻烦,特别是当我为3个不同的环境变量做这件事时.
任何想法,如果有更好的实施,或者你会说这是"pythonic"的方式吗?
非常感谢
Jac*_*cob 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
Run Code Online (Sandbox Code Playgroud)
您可以将多个语句放入try块中.
你所拥有的实际上是非常常见的习语,可以说是首选的模式.或者你只是让正常的异常通过而不打印任何额外的东西.Python本身具有相同的效果.所以,
path = os.environ["SOME_NAME"]
Run Code Online (Sandbox Code Playgroud)
只会自动引发KeyError异常,默认行为是在未捕获的异常上退出.回溯将显示您的位置和位置.
但是,如果可能,您还可以提供默认值.
path = os.environ.get("SOME_NAME", "/default/value")
Run Code Online (Sandbox Code Playgroud)
这不会引发错误,您可以做一些合理的默认操作.
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |