2016-12-22 2 views
3

Иногда urllib.urlretrieve запрашивает у пользователя имя пользователя и пароль.Как убедиться, что urllib.urlretrieve работает не интерактивно?

Это, откровенно говоря, удивительно, потому что я ожидал, что urllib.urlretrieve будет неинтерактивным.

Возможно ли это просто вызвать исключение, когда требуется аутентификация? Если нет, то есть одинаково простая альтернатива, или я должен

os.system('curl ...') 
+0

Возможно, вы могли бы попытаться определить свой собственный подкласс 'URLopener' и перезаписать' get_user_passwd'/'prompt_user_passwd' в нем (и передать экземпляр этого файла в' urlretrieve') ? – xjcl

ответ

0

Я пытался получить доступ к URL, который требует имя пользователя и пароль намеренно, и я получаю

IOError: ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x02A279E0>). 

Вы получаете то же самое ? Если да, вы можете просто исключить эту ошибку в своей попытке, кроме блока

+0

Нет, но я бы хотел. – MaxB

+0

Документы говорят, что 'FancyURLopener' должен запрашивать пользователя. Может быть, вы не используете это с терминала? – MaxB