Ошибка в urllib2, но не в urllib (только для Windows) - PullRequest
1 голос
/ 27 марта 2012

Я написал скрипт на python для обновления динамического IP-адреса в dyndns.org.Dyndns нуждается в петиции вроде:

"http://"+dyndns_user+":"+dyndns_pass+"@members.dyndns.org/nic/update?hostname="+dyndns_host+"&myip="+ip

Я использовал urllib для обработки запроса, и он работал нормально:

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()

Но я читал, что urllib устарел с версии 2.6 в пользу urllib2, поэтому я попробовал:

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()

Проблема в том, что: если я выполняю последний код в Linux, то все в порядке, но в Windows я получаю исключение URLError, потому что, очевидно, urllib2.urlopen() пытается проанализировать ":" в строке dyndns как порт url (и не удается).Если я выполню прежний код (используя urllib), сценарий будет работать нормально как в Linux, так и в Windows.

Кто-нибудь знает, что происходит?Я считаю, что это, вероятно, моя вина, но меня беспокоит тот факт, что скрипт работает в Linux, а не в Windows ...

...