Python 打开本地文件可以使用urllib,但不能使用urllib2

Python 打开本地文件可以使用urllib,但不能使用urllib2,python,urllib2,urllib,Python,Urllib2,Urllib,我正在尝试使用urllib2打开本地文件。我该怎么做呢?当我使用urllib尝试以下行时: resp = urllib.urlopen(url) 它工作正常,但当我切换到: resp = urllib2.urlopen(url) 我得到: ValueError: unknown url type: /path/to/file 文件确实存在的位置 谢谢 只需将文件://“放在路径前面即可 >>> import urllib2 >>> urllib2.url

我正在尝试使用urllib2打开本地文件。我该怎么做呢?当我使用urllib尝试以下行时:

resp = urllib.urlopen(url)
它工作正常,但当我切换到:

resp = urllib2.urlopen(url)
我得到:

ValueError: unknown url type: /path/to/file
文件确实存在的位置

谢谢

只需将
文件://“
放在路径前面即可

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

在urllib.urlopen方法中:如果URL参数没有方案标识符,它将打开一个本地文件。但是urllib2的行为不是这样的

因此,urllib2方法无法处理它


在url参数的两个方法调用中都包含'file://'模式标识符总是好的。

我也有同样的问题,实际上,我刚刚意识到,如果您下载页面的源代码,然后在chrome上打开它,您的浏览器将在url栏上显示确切的本地路径。祝你好运

谢谢你的解释!另一方面,
open
将无法理解
文件://
前缀。@JasonBaldwin:如果路径包含百分比字符,它可能会中断。使用
urllib.quote()
来避免它:
'file://'+urllib.quote(abspath(path))
@AntoinePelisse,我认为这超出了
urlopen()
的责任范围。如果有相对路径,则应使用
os.path.abspath()
。在Windows 10、python 3.7.4、urlopen 1.0.0上运行,为了在程序运行的同一路径上获取文件,需要提供类似“file:./”的url,以防它对其他任何人不起作用。。。你实际上需要3个反斜杠
'file://'+os.path.asbpath('file.html')
对我很有用。当然,也要记住在顶部导入操作系统