从FTP下载文件时出现多处理错误

2024-03-29 08:03:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对代码的这种独特的美已经有一段时间了,我可以理解为什么它不起作用。当我运行下面的代码,我得到一个酸洗错误,它总是在不同的文件。在

这将下载随机数目的文件,然后神奇地停止。由于某些原因,第i个文件名(或它选择停止的位置)突然不可pickle,而之前的其他文件名则是不可pickle的。我可以看到所有的都是不可腌制的,或者没有一个,但是有一个任意的数字不可腌制是很奇怪的。在

n=10
urls = ["ftp://ftp.sec.gov/{0:s}".format(f) for f in flist[:n]]
print urls
from multiprocessing import Pool
from urllib import urlretrieve

def download(url):
    try:
        file_name = str(url.split('/')[-1])
        print file_name
        return urlretrieve(url, file_name), None
    except Exception as e:
        return None, e

if __name__ == "__main__":
   p = Pool(10) 
   p.map(download, urls) 

我得到的错误是:

^{pr2}$

有人知道为什么第i种元素突然不能腌制了吗?而其他人以前呢?我能看出这是因为它认为第I个名字是一个stringIO,但这是没有意义的,因为在它之前的名字应该也是。在


Tags: 文件代码namefromimporturl文件名错误
1条回答
网友
1楼 · 发布于 2024-03-29 08:03:48

您将返回一个表示FTP头的mimetools.Message对象。要么终止它,要么在返回它之前转换成一个普通的字符串。在

下面是后者的一个例子:

n=10
urls = ["ftp://ftp.sec.gov/{0:s}".format(f) for f in flist[:n]]
print urls
from multiprocessing import Pool
from urllib import urlretrieve

def download(url):
    try:
        file_name = str(url.split('/')[-1])
        print file_name
        filename,headers = urlretrieve(url, file_name)
        return (filename, repr(headers), None
    except Exception as e:
        return None, e

if __name__ == "__main__":
   p = Pool(10) 
   p.map(download, urls) 

相关问题 更多 >