我查看了许多现有的名称错误和未定义的变量帖子,遗憾的是无法解决我的问题。我对编程比较陌生,尤其是Python。
我有一个在informcast_data.py中定义的字典词典:
allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages', 'page_title': 'Messages: Send or Edit Messages'}
我正在将informacast_data.py导入users.py:
from informacast.informacast_data import ICData
然后我有一个函数verify_links,其中包含以下语句:
for href_link in hrefs:
if href_link.find(ICData.allLinks['page_title']['link'])!=-1:
self.logger.debug("verify_links found=True for " + str(href_link))
found=True
如果我在page_title周围留下引号,我得到一个keyError,并且我被告知要删除引号,因为它是一个变量而不是字符串,当我删除引号时我得到nameError,我不知道如何继续。
下面是完整的追溯:
Traceback (most recent call last):
File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 17, in test_appadmin_role
self.verify_role("appAdmin")
File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 78, in verify_role
self.verify_links(sel, roleName)
File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 104, in verify_links
if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
NameError: global name 'page_title' is not defined
提前感谢你的帮助。
答案 0 :(得分:0)
allLinks
是嵌套字典。顶级没有page_title
键,这就是你得到一个关键错误的原因:
>>> allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages', 'page_title': 'Messages: Send or Edit Messages'}}
>>> allLinks['page_title']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'page_title'
嵌套词典中的这样一个键,但是:
>>> allLinks['Send or Edit Messages']['page_title']
'Messages: Send or Edit Messages'
我认为您要定义一个值为page_title
的变量'Send or Edit Messages'
:
>>> page_title = 'Send or Edit Messages'
>>> allLinks[page_title]['link']
'/InformaCast/admin?cmd=listMessages'
如果你遍历allLinks
中可行的键:
for href_link in hrefs:
for page_title in ICData.allLinks:
if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
self.logger.debug("verify_links found=True for " + str(href_link))
found=True