2013-02-06 15 views
0

我看了很多現存的nameErrors和未定義的變量帖子,很不幸地無法解決我的問題。我對編程尤其是Python比較陌生。nameError:global name page_title undefined

我在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 

預先感謝您的任何援助。

+1

有這個代碼不NameError。請向我們展示錯誤的完整追溯。 –

+0

完全回溯:回溯(最近一次通話最後): 文件「C:\ Users \ jesse.sole \ Jesse_Workspace \ trunk \ src \ informacast \ tests \ users.py」,第17行,在test_appadmin_role self.verify_role(「 )在文件「C:\ Users \ jesse.sole \ Jesse_Workspace \ trunk \ src \ informacast \ tests \ users.py」中,第78行,在verify_role中 self.verify_links(sel,roleName) 文件「C:\ appAdmin」用戶\ jesse.sole \ Jesse_Workspace \ trunk \ src \ informacast \ tests \ users.py「,第104行,在verify_links 如果href_link.find(ICData.allLinks [page_title] ['link'])!= - 1: NameError:未定義全局名稱'page_title' – user2047252

回答

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 
+0

keyError有意義,現在我明白了。發送或編輯消息是allLinks中超過50個嵌套字典之一。我需要for循環來查看所有鏈接並找到page_title來驗證功能。我現在看到,當我刪除引號時,informacast_data.py中的'page_title'是未定義的。我不清楚在哪裏以及如何定義它。 – user2047252

相關問題