2013-04-24 46 views
0

此代碼將無法正常工作Python(新手):如何在我的函數中使用導入的函數?

import urllib 

def loadHtml (url): 
    response = urllib.open(url) 
    html = response.read() 
    return html 

firstUrl = 'http://www.google.it'; 
html = loadHtml (firstUrl); 

這是錯誤

File "af1.py", line 10, in <module> 
    html = loadHtml (firstUrl); 
File "af1.py", line 5, in loadHtml 
    response = urllib.open(url) 

我在我的Python的第二天..現在出了什麼問題?

AttributeError: 'module' object has no attribute 'open' 

編輯:,因爲我沒有理解什麼是Python的由「模塊」的意思是我沒有搜索urllib中開放

回答

5

也許urllib.urlopen()是你需要什麼,而不是urllib.open()

您可能會發現在庫的詳細資料:

+0

哦,我的上帝是一個多麼愚蠢的問題!謝謝 ! – realtebo 2013-04-24 14:19:01

+0

@realtebo不客氣。 – Alexey 2013-04-24 14:20:41

2

的問題正是因爲它說,在urllib沒有按」沒有一種方法叫做open()

也許你的意思是urllib.urlopen()

解決這樣的事情,不留Python是使用dir()功能模塊上,扔在一些瑣碎的代碼列表以搜索的方式一:

>>> import urllib 
>>> [x for x in dir(urllib) if x.find("open") >= 0] 
['FancyURLopener', 'URLopener', '_urlopener', 'urlopen'] 
+0

第二天的編碼器實在太多了!但是它非常有用! – realtebo 2013-04-24 14:21:45

2

的錯誤是urllib模塊沒有名爲open的功能。

>>> 'open' in dir(urllib) 
False 

有關如何知道模塊包含的內容,請參閱以下代碼片段。

>>> import urllib 
>>> dir(urllib) 
['ContentTooShortError', 'FancyURLopener', 'MAXFTPCACHE', 'URLopener', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_ftperrors', '_have_ssl', '_hexdig', '_hextochr', '_hostprog', '_is_unicode', '_localhost', '_noheaders', '_nportprog', '_passwdprog', '_portprog', '_queryprog', '_safe_map', '_safe_quoters', '_tagprog', '_thishost', '_typeprog', '_urlopener', '_userprog', '_valueprog', 'addbase', 'addclosehook', 'addinfo', 'addinfourl', 'always_safe', 'base64', 'basejoin', 'c', 'ftpcache', 'ftperrors', 'ftpwrapper', 'getproxies', 'getproxies_environment', 'getproxies_registry', 'i', 'localhost', 'noheaders', 'os', 'pathname2url', 'proxy_bypass', 'proxy_bypass_environment', 'proxy_bypass_registry', 'quote', 'quote_plus', 'reporthook', 'socket', 'splitattr', 'splithost', 'splitnport', 'splitpasswd', 'splitport', 'splitquery', 'splittag', 'splittype', 'splituser', 'splitvalue', 'ssl', 'string', 'sys', 'test1', 'thishost', 'time', 'toBytes', 'unquote', 'unquote_plus', 'unwrap', 'url2pathname', 'urlcleanup', 'urlencode', 'urlopen', 'urlretrieve'] 

Did you mean urllib.urlopen

+0

哇!我不知道dir方法,有用!!!!! – realtebo 2013-04-24 14:19:57

+0

不客氣!:) – 2013-04-24 14:25:34

+0

除'dir()'外,還有'help()',它不僅會列出模塊(或任何其他對象)的成員,還會顯示其內置幫助(docstrings)。 – kindall 2013-04-24 15:08:30

1

錯誤的原因:

urllib.open() 

也許你想做的事:

urllib.urlopen() 

一看就知道:

>>> dir(urllib).index('open') 

Traceback (most recent call last): 
    File "<pyshell#18>", line 1, in <module> 
    dir(urllib).index('open') 
ValueError: 'open' is not in list 
1

@realtebo有教程很多在那裏爲初學者。你應該從基礎知識開始,而不是嘗試使用庫。檢查出來here

相關問題