0

我有一个 python 脚本,我可以作为 jenkins 用户在机器上成功运行。当我使用 jenkins Web 前端配置要在机器上运行的作业时,我将 python 脚本作为要运行的作业。出于某种原因,我得到了在 Python 环境中对我来说毫无意义的最奇怪的 KeyError,所以也许有人以前见过这种事情:

    log_name = '-'.join([status_map[test.status], test.config[0], test.config[1], test.group_raw+'.'+test.title])+'.log'
KeyError: 'error: failed to open driver pseudo terminal : Device not configuredFAILURE'

附加到错误消息末尾的“FAILURE”实际上是 test.status 的值,该值正在引发此错误的行中的 status_map 中查找。但是,据我所知,代码是正确的,应该没有错误,当我自己通过命令行运行它时,脚本运行良好。问题可能是什么?

4

2 回答 2

0

您有一个名为的变量test.status,其值为error: failed to open driver pseudo terminal : Device not configuredFAILURE

但是字典status_map不包含任何这样的键,因此使用 test.status 键访问这个字典会导致 keyError。

status_map[test.status]

KeyError: 'error: failed to open driver pseudo terminal : Device not configuredFAILURE'
于 2013-10-15T05:53:12.197 回答
0
log_name = '-'.join([status_map[test.status], test.config[0], test.config[1], test.group_raw+'.'+test.title])+'.log'
KeyError: 'error: failed to open driver pseudo terminal : Device not configuredFAILURE'

您需要检查dict的第一个键是否存在,首先使用status_map.has_key(test.status)检查status_map是否存在test.status

if status_map.has_key(test.status):
    log_name = '-'.join([status_map[test.status], test.config[0], test.config[1], str(test.group_raw)+'.'+test.title])+'.log'
于 2013-10-15T06:54:19.710 回答