2011-12-06 14 views
12

Ho un codice 2.7 funzionante, tuttavia non ci sono cose come cookielib e urllib2 in 3.2? Come posso far funzionare questo codice su 3.2? Nel caso qualcuno si stia chiedendo - Sono su Windows.Python 3.2 - cookielib

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

risposta

23

Da Python docs:

Nota Il modulo cookielib è stato rinominato http.cookiejar in Python 3.0. Lo strumento 2to3 adatta automaticamente le importazioni quando si convertono le sorgenti in 3.0.

Non è una soluzione accettabile? Se no, perché?

7

Come menzionato sopra cookielib è stato rinominato, utilizzare il seguente frammento sia pitone 2 e 3:

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

In Python 3.2, urllib2 viene rinominato e cookielib viene rinominato http.cookiejar. Quindi lo si rinomina come urllib.request e http.cookijar