2011-12-06 31 views
12

我有工作2.7码,但也有在3.2 cookielib和的urllib2没有这样的事?我如何使这个代码在3.2上工作?如果有人想知道 - 我在Windows上。的Python 3.2 - cookielib

实施例2.7

import urllib, urllib2, cookielib 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 

login_data = urllib.urlencode({'login' : 'admin', 'pass' : '123'}) 

resp = opener.open('http://website/', login_data) 
html = resp.read() 

# I know that 3.2 is using print(), don't have to point that out. 
print html 
+1

http://python3porting.com/stdlib.html –

回答

23

Python docs来自:

注cookielib模块已被重命名在Python 3.0至http.cookiejar。 2to3工具会在将源代码转换为3.0时自动适应导入。

那是不是可以接受的解决方案?如果不是,为什么?

7

如以上提到的cookielib已被重命名,使用下面的代码段两者蟒2和3:

try: 
    from http.cookiejar import CookieJar 
except ImportError: 
    from cookielib import CookieJar 
3

在Python 3.2,urllib2的被重命名urllib.request里,并cookielib被重命名http.cookiejar。所以,将其重命名为urllib.request里和http.cookijar