2011-12-06 17 views
12

Tengo código de trabajo 2.7, sin embargo, no hay nada como cookielib y urllib2 en 3.2? ¿Cómo puedo hacer que este código funcione en 3.2? En caso de que alguien se esté preguntando, estoy en Windows.Python 3.2 - cookielib

Ejemplo 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 –

Respuesta

23

De Python docs:

Nota El módulo cookielib ha sido renombrado a http.cookiejar en Python 3.0. La herramienta 2to3 adaptará automáticamente las importaciones al convertir sus fuentes a 3.0.

¿No es esa una solución aceptable? Si no, ¿por qué?

7

Como se mencionó anteriormente cookielib ha sido cambiado de nombre, utiliza el siguiente fragmento para ambos pitón 2 y 3:

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

En Python 3.2, urllib2 se cambia el nombre, y cookielib se cambia el nombre http.cookiejar. Así que lo renombramos como urllib.request y http.cookijar