我是初学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)
我收到此错误: I / O错误(套接字错误):
[Errno 11004] getaddrinfo失败
是的,该文本文件存在于该位置。文本文件的内容是“Nothing”
堆栈跟踪表示最后一次调用是open_ftp
C:/Python27/Lib/urllib.py
中的第516行:
host = socket.gethostbyname(host)
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed
我可以打开网址,所以我认为它不是proxy/firewall issue(我也不明白)
我不明白newlines or ENDs可能与它有什么关系。
我认为它应该有效,因为urllib reference:
如果URL没有方案标识符,或者它有文件:as 它的方案标识符,这将打开一个本地文件(没有通用 新行);否则它会在某个地方打开一个服务器的套接字 网络
(我认为这只意味着那些期望已经在那里转换过通用换行符的人会感到失望。
注意我也对“如果它没有方案标识符”的部分提出异议,因为如果我不在file://
字符串之前,我会得到
IOError:[Errno url error] unknown url type:'c')
我想“学会钓鱼”可以这么说,任何人都可以告诉我有没有办法调试urllib.py
以至少了解这些价值观?我可以用eclipse做吗?它似乎总是迫使我进入一个项目。
答案 0 :(得分:2)
而不是file://<filename>
,请使用file:///<filename
(请注意额外的斜杠)。
另请注意,我们已弃用urllib.urlopen
,您应该使用urllib2.urlopen
。