2013-12-13 29 views
18

我想使用urllib2打開本地文件。我怎麼能這樣做呢?當我試着使用urllib的下面一行:打開本地文件使用urllib但不使用urllib2

resp = urllib.urlopen(url) 

它工作正常,但是當我切換到:

resp = urllib2.urlopen(url) 

我得到:

ValueError: unknown url type: /path/to/file 

文件所在絕對不會退出。

謝謝!

回答

27

只要把"file://"前面的路

>>> import urllib2 
>>> urllib2.urlopen("file:///etc/debian_version").read() 
'wheezy/sid\n' 
+0

完美的作品,謝謝! –

+1

@JasonBaldwin:如果路徑包含百分比字符,它可能會中斷。使用'urllib.quote()'來避免它:'file://'+ urllib.quote(abspath(path))' – jfs

+0

如果路徑是相對的,那麼這是行不通的。 –

1

在了urllib.urlopen方法:如果URL參數沒有一個方案標識符,它會打開一個本地文件。但urllib2並不像這樣。

因此,urllib2方法無法處理它。

在url參數的兩個方法調用中包含'file://'模式標識符總是很好。

+0

感謝您的解釋! –

+0

另一方面'open'不會理解'file://'前綴。 –

0

我有同樣的問題,實際上,我只是意識到,如果你下載頁面的源代碼,然後在Chrome瀏覽器上打開它,你的瀏覽器將顯示URL欄上確切的本地路徑。祝你好運!

相關問題