Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Perl翻译成Python:要么这样做,要么死_Python_Perl - Fatal编程技术网

将Perl翻译成Python:要么这样做,要么死

将Perl翻译成Python:要么这样做,要么死,python,perl,Python,Perl,我正在将一个Perl(我对它知之甚少)脚本迁移到python $path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n"; 我可以(希望)看到这行代码的作用,或者将变量“path”设置为环境变量“SOME_NAME”,或者如果设置失败,则向用户打印一条错误消息。(旁注:任何人都知道如何让搜索引擎搜索像“| |”这样的特殊字符。) 我尝试以一种“pythonic”的方式(请求原谅比请求允许更容易)实现它,使用:

我正在将一个Perl(我对它知之甚少)脚本迁移到python

$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n";
我可以(希望)看到这行代码的作用,或者将变量“path”设置为环境变量“SOME_NAME”,或者如果设置失败,则向用户打印一条错误消息。(旁注:任何人都知道如何让搜索引擎搜索像“| |”这样的特殊字符。)

我尝试以一种“pythonic”的方式(请求原谅比请求允许更容易)实现它,使用:

但这看起来相当麻烦,特别是当我为3个不同的环境变量做这项工作时

有没有更好的实现方法,或者你会说这是一种“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")

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

是的,我想我需要分离,以便告诉用户缺少哪个,但这当然会包含在异常的回溯中。。干杯关于你的谷歌问题,:
通常,标点符号被忽略,包括@#$%^&*()=+[]\和其他特殊字符。
可能对此无能为力。想一想,如果有一个搜索引擎不忽略标点符号,那将非常有用,尤其是在搜索类似的东西时@如果你用谷歌搜索角色的名字,你可能会得到一些有意义的东西。对于要搜索
| |
的expample,请键入“perl垂直条”。如果有的话,字符和符号上通常会列出它们在许多编程语言中的用途。你认为你可以通过威胁我们来获得帮助吗?!:)@阿克斯曼我也是这样读的等一下?他在问如何搜索
| |
?或
path = os.environ.get("SOME_NAME", "/default/value")