IOError: [Ошибка сокета Errno] [Errno 11004] Ошибка getaddrinfo - PullRequest
2 голосов
/ 29 января 2012

Я начинающий программист на Python.С 2.7.2, Windows 7, встроенным интерпретатором и тремя библиотеками.Я пытаюсь сделать это с ошибкой.Я благодарен за любую помощь?

import os
import urllib
import socket

DISNEY_URL = 'http://www.sec.gov/Archives/edgar/data/1001039/000119312511321340/dis-20111001.xml'
#Neither of these seem to work when opening with urllib.urlopen becaue of the error:
#I/O error(socket error): [Errno 11004] getaddrinfo failed

DISNEY_LOCAL = 'file://C:/Users/Nate/Desktop/Education/python_education/xbrlnexusfiles/xbrlfiles/dis-20111001.xml'
DISNEY_LOCAL_NONE = 'file://C:/Users/Nate/Desktop/Education/python_education/xbrlnexusfiles/xbrlfiles/dis.txt'


class SECFilingPackage(object):

    def __init__ (self, SEC_URL):
        URLFilePath, URLFileExt = os.path.splitext(SEC_URL)
        try:
            urllib.urlopen(SEC_URL)
        except IOError as (errno, strerror):
            print "I/O error({0}): {1}".format(errno, strerror)
            #This error throws, see it copied above;

DisneyPackage = SECFilingPackage(DISNEY_LOCAL_NONE)

Я получаю эту ошибку: Ошибка ввода-вывода (ошибка сокета):

[Errno 11004] сбой getaddrinfo

Да, текстовый файл существует в этом месте.Содержимое текстового файла: «Ничего» * ​​1010 *

Трассировка стека говорит, что последний вызов был строкой 516 в open_ftp C:/Python27/Lib/urllib.py:

host = socket.gethostbyname(host)
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed

Я мог бы нормально открыть URL, поэтомуЯ не думаю, что это проблема с прокси / брандмауэром (и я не понимаю этого на самом деле)

И я не понимаю, что, возможно, переводы строк или END могут понадобитьсяделать с этим.

Я полагаю, что это должно работать из-за ссылки urllib:

Если URL не имеет идентификатора схемы, или если он имеет файл: как егоидентификатор схемы, при этом открывается локальный файл (без универсальных символов новой строки);в противном случае он открывает сокет для сервера где-нибудь в сети.

(я думаю, это просто означает, что тот, кто ожидает универсальные переводы строк, уже преобразованные там, будет разочарован.

Обратите внимание, я такжеоспаривать часть о "если у него нет идентификатора схемы", потому что, если я не предшествую строки с file://, я получаю

IOError: [Errno url error] неизвестный тип URL:'c')

Я хочу, так сказать, "научиться ловить рыбу", может кто-нибудь сказать мне, есть ли способ отладки в urllib.py, чтобы хотя бы понять эти значения?Могу ли я сделать это с затмением?Кажется, это всегда заставляет меня участвовать в проекте.

1 Ответ

2 голосов
/ 29 января 2012

Вместо file://<filename>, используйте file:///<filename (обратите внимание на дополнительную косую черту).

Кроме того, обратите внимание, что urllib.urlopen устарело, вы должны использовать urllib2.urlopen вместо.

...