簡體   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