Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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
Python2.x是否获取signalnum的unix信号名(代码)?_Python_Unix_Signals_Idioms - Fatal编程技术网

Python2.x是否获取signalnum的unix信号名(代码)?

Python2.x是否获取signalnum的unix信号名(代码)?,python,unix,signals,idioms,Python,Unix,Signals,Idioms,从信号代码中获取信号名称是否有更具python风格的方法?我目前的做法是: import signal dict((getattr(signal,na),na) for na in dir(signal) if na[:3]=='SIG') 我在2.7文档中查找这样的地图,但没有成功。如果它有一个,它逃避我。有更好的方法吗?你可以使用听写理解,我认为这看起来更好一些: {getattr(signal, n) : n for n in dir(signal) if n.startswith('S

从信号代码中获取信号名称是否有更具python风格的方法?我目前的做法是:

import signal
dict((getattr(signal,na),na) for na in dir(signal) if na[:3]=='SIG')

我在2.7文档中查找这样的地图,但没有成功。如果它有一个,它逃避我。有更好的方法吗?

你可以使用听写理解,我认为这看起来更好一些:

{getattr(signal, n) : n for n in dir(signal) if n.startswith('SIG')}
而且,你最初的理解过于复杂。在中为n添加了一个额外的
,而您不需要它。你可以这样写:

dict((getattr(signal,n),n) for n in dir(signal) if n[:3] == 'SIG')

我不认为Python提供了这样的int->name映射。就个人而言,我不会在这里使用列表理解,因为我发现代码太难阅读
n[:3]
可以写成
n.startswith('SIG')
,通常在第二部分中使用
n
似乎有误导性,因为它不是一个数字,而是一个符号名。@FelixSchwarz hm,我在名称中使用了
n
。编辑到
na
过度复杂:你说得对,我做了编辑!听写理解:当然更好。哪一个是支持它的python的最低版本?(不幸的是,我需要支持一些旧版本)。@naxa Dict理解为2.7+。如果您需要早期支持,则必须使用
dict(…)
方法。请注意,上述方法可能会错误地报告,例如
SIG\u SETMASK
而不是
SIGINT
。例如,如果n.startswith('SIG')而不是n.startswith('SIG')},则更改为
{getattr(signal,n):n表示dir(signal)中的n。