2013-12-13 6 views
18

urllib2を使用してローカルファイルを開こうとしています。これをやり遂げるにはどうすればいいですか?私はurllibはして次の行をしようとすると:それは正常に動作しますが、私はそれを切り替えたときローカルファイルを開くurllibでは動作しますが、urllib2では動作しません

resp = urllib.urlopen(url) 

resp = urllib2.urlopen(url) 

私が取得:そのファイルが確実に終了してい

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

ありがとうございます!

答えて

27

はジャストurllib.urlopen方法で

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

完璧に動作します、ありがとう! –

+1

@JasonBaldwin:パスにパーセント記号が含まれていると、破損することがあります。 '' file:// '+ urllib.quote(abspath(path)) ' – jfs

+0

パスが相対パスであれば動作しません。 –

1

パスの前に"file://"を置く:URLのパラメータは、スキーム識別子を持っていない場合は、ローカルファイルを開きます。 urllib2はこのように動作しません。

したがって、urllib2メソッドは処理できません。

urlパラメータの両方のメソッド呼び出しに 'file://'スキーマ識別子を含めることは、常に有効です。

+0

説明をありがとう! –

+0

一方、 'open'は' file:// 'プレフィックスを理解しません。 –

0

私は同じ問題を抱えていましたが、実際には、ページのソースをダウンロードしてクロムで開くと、ブラウザにURLバーの正確なローカルパスが表示されることに気づきました。がんばろう!

関連する問題