Archive note: Recovered from the Wayback Machine. Formatting may reflect the original archived page.
Python 2有一些用来分析,编码和获取URL的模块,但是这些模块就像老鼠窝一样相互重叠。在Python 3里,这些模块被重构、组合成了一个单独的包,即urllib。
[TABLE]
以前,Python 2里的urllib模块有各种各样的函数,包括用来获取数据的urlopen(),还有用来将url分割成其组成部分的splittype(),splithost()和splituser()函数。在新的urllib包里,这些函数被组织得更有逻辑性。2to3将会修改这些函数的调用以适应新的命名方案。
在Python 3里,以前的urllib2模块被并入了urllib包。同时,以urllib2里各种你最喜爱的东西将会一个不缺地出现在Python 3的urllib模块里,比如build_opener()方法,Request对象,HTTPBasicAuthHandler和friends。
Python 3里的urllib.parse模块包含了原来Python 2里urlparse模块所有的解析函数。
urllib.robotparse模块解析robots.txt文件。
处理http重定向和其他状态码的FancyURLopener类在Python 3里的urllib.request模块里依然有效。urlencode()函数已经被转移到了urllib.parse里。
Request对象在urllib.request里依然有效,但是像HTTPError这样的常量已经被转移到了urllib.error里。
我是否有提到2to3也会重写你的函数调用?比如,如果你的Python2代码里导入了urllib模块,调用了urllib.urlopen()函数获取数据,2to3会同时修改import语句和函数调用。
[TABLE]