python - Fejl i urllib2 men ikke i urllib (kun Windows)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har kodet et python-script til at opdatere en dynamisk IP i dyndns.org. Dyndns har brug for et andragende som:


"http://"+dyndns\_user+":"+dyndns\_pass+"@members.dyndns.org/nic/update?hostname="+dyndns\_host+"&myip="+ip


Jeg brugte urllib til at behandle anmodningen, og det fungerede OK:


dyndns = "http://"+dyndns\_user+":"+dyndns\_pass+"@members.dyndns.org/nic/update?hostname="+dyndns\_host+"&myip="
dyndns\_update = urllib.urlopen(dyndns+newip)
dyndns\_msg = dyndns\_update.read()


Men jeg læser at urllib er Uddateret siden version 2.6 til fordel for urllib2, så jeg prøvede det:


dyndns = "http://"+dyndns\_user+":"+dyndns\_pass+"@members.dyndns.org/nic/update?hostname="+dyndns\_host+"&myip="
dyndns\_update = urllib2.urlopen(dyndns+newip)
dyndns\_msg = dyndns\_update.read()


Problemet er: Hvis jeg udfører sidstnævnte kode i Linux, fungerer OK, men i Windows får jeg en URLError-undtagelse, fordi urllib2.urlopen () tilsyneladende forsøger at analysere ':' i dyndns-streng som url-port (og fejler). Hvis jeg udfører tidligere kode (ved hjælp af urllib) fungerer scriptet OK både i Linux og Windows.


Nogen ved hvad der sker? Jeg tror, ​​at det nok er min skyld, men det faktum, at scriptet virker i Linux, men ikke i Windows plager mig ...

Bedste reference