【发布时间】:2013-12-13 03:29:30
【问题描述】:
我正在尝试使用 urllib2 打开一个本地文件。我该怎么做呢?当我使用 urllib 尝试以下行时:
resp = urllib.urlopen(url)
它可以正常工作,但是当我将其切换到:
resp = urllib2.urlopen(url)
我明白了:
ValueError: unknown url type: /path/to/file
该文件确实退出的位置。
谢谢!
【问题讨论】:
我正在尝试使用 urllib2 打开一个本地文件。我该怎么做呢?当我使用 urllib 尝试以下行时:
resp = urllib.urlopen(url)
它可以正常工作,但是当我将其切换到:
resp = urllib2.urlopen(url)
我明白了:
ValueError: unknown url type: /path/to/file
该文件确实退出的位置。
谢谢!
【问题讨论】:
只要把"file://"放在路径前面
>>> import urllib2
>>> urllib2.urlopen("file:///etc/debian_version").read()
'wheezy/sid\n'
【讨论】:
urllib.quote() 避免它:'file://' + urllib.quote(abspath(path))
urlopen() 的责任。如果你有相对路径,你应该使用os.path.abspath()。
'file:///' + os.path.asbpath('file.html')为我工作。当然记得在顶部也import os
在 urllib.urlopen 方法中:如果 URL 参数没有方案标识符,它将打开一个本地文件。但 urllib2 的行为并非如此。
所以,urllib2 方法处理不了。
在 url 参数的两个方法调用中都包含“file://”模式标识符总是好的。
【讨论】:
open 不会理解 file:// 前缀。
我遇到了同样的问题,实际上,我刚刚意识到,如果您下载页面的源代码,然后在 chrome 上打开它,您的浏览器将在 url 栏上显示确切的本地路径。祝你好运!
【讨论】: