Python ValueError:未知url类型:空格(?)

Python ValueError:未知url类型:空格(?),python,urllib2,download,Python,Urllib2,Download,我正在使用Python 2.7中的urllib2模块,使用Spyder 3.0通过读取包含文本文件列表的文本文件来批量下载文本文件: reload(sys) sys.setdefaultencoding('utf-8') with open('ocean_not_templated_url.txt', 'r') as text: lines = text.readlines() for line in lines:

我正在使用Python 2.7中的urllib2模块,使用Spyder 3.0通过读取包含文本文件列表的文本文件来批量下载文本文件:

    reload(sys)
    sys.setdefaultencoding('utf-8')
    with open('ocean_not_templated_url.txt', 'r') as text:
        lines = text.readlines()
        for line in lines:
            url = urllib2.urlopen(line.strip('ï \xa0\t\n\r\v'))
            with open(line.strip('\n\r\t ').replace('/', '!').replace(':', '~'), 'wb') as out:
                for d in url:
                    out.write(d)
我已经在我剥离的URL中发现了一堆奇怪的字符,但是,当接近90%完成时,脚本失败,出现以下错误:


我认为它是一个不间断的空格(代码中用\xa0表示),但它仍然失败。有什么想法吗?

这是一个奇怪的URL

指定网络上的通信协议。如果文件存在于WWW上,请尝试在URL前面加上
http://
和域名

文件总是驻留在某个服务器的目录中或系统的本地。因此,这些文件必须有网络路径,例如:

http://127.0.0.1/folder1/samuel/file1.txt

同样的例子,localhost是127.0.0.1(通常)的别名

http://localhost/folder1/samuel/file1.txt

这可能会解决问题。只要想想你的文件存在的地方以及它应该如何处理


更新:

我在这方面做了很多实验。我想我知道为什么会出现这样的错误!:D

我推测,您存储URL的文件实际上在末尾附近有一个鬼鬼祟祟的空行。我可以说它已经接近尾声了,正如您所说,它执行了大约90%的操作,然后失败了。因此,python urllib2函数get_type无法处理该空url,并抛出
未知url类型:

我想这就是问题所在!删除文件
ocean\u not\u templated\u url.txt
中的空行并尝试一下


检查一下,让我知道!:P

Hmm。。我应该在哪里指定协议?顺便说一句,谢谢你的建议。我明白了。谢谢你的详细回答!!前缀
http://
已存在于文本文件中的URL列表中,例如
http://www1.ncdc.noaa.gov/pub/data/paleo/paleocean/sediment_files/complete/e49-23-tab.txt
。(它们在ftp服务器上。)如果其中一些URL不再使用,是否可能是这导致了问题?我知道他们已经被我们的数据管理器转移了,有些已经很老了。再次感谢。@SamuelLockshin NOAAAffilia再次更新了它!希望我做对了!是的,有一些空行,另一个问题是一行上有两个url,因此它们之间的空格使python出错(尽管尝试将这两个url作为一个url来读取也会导致失败)。无论如何,我标记了答案并更新为正确。再次感谢-Sam@Samuel耶!很乐意帮忙!:)