如何使用在本地 .txt 文件中找到的网址下载多个文件

how can I download multiple files with the web address found in a local .txt file

import wget
with open('downloadhlt.txt') as file:
    urls = file.read()
    for line in urls.split('\n'):
        wget.download(line, 'localfolder')

出于某种原因,post 无法正常工作,所以我将代码放在上面 我想做的是从一个文本文件中提取大约 200 万行这样的内容。

http://halitereplaybucket.s3.amazonaws.com/1475594084-2235734685.hlt
http://halitereplaybucket.s3.amazonaws.com/1475594100-2251426701.hlt
http://halitereplaybucket.s3.amazonaws.com/1475594119-2270812773.hlt

我想抓取每一行并请求它,以便它作为一个大于 10 的组下载。目前,我所拥有的和它一次下载一个项目,非常耗时。

我试着查看 Ways to read/edit multiple lines in python 但迭代似乎是为了编辑,而我的是为了多次执行 wget。

我没有尝试过其他方法,因为这是我第一次需要进行超过 200 万次的下载调用。

这应该可以正常工作,我是一个新手所以我真的不能 建议您启动大声笑的线程数。 无论如何,这些是我的 2 美分,希望它能有所帮助。

我试过计时你我的超过 27 次下载:

(base) MBPdiFrancesco:stack francesco$ python3 old.py
Elapsed Time: 14.542160034179688
(base) MBPdiFrancesco:stack francesco$ python3 new.py
Elapsed Time: 1.9618661403656006

这是代码,您必须创建一个 "downloads" 文件夹

import wget
from multiprocessing.pool import ThreadPool
from time import time as timer


s = timer()
thread_num = 8


def download(url):
    try:
        wget.download(url, 'downloads/')
    except Exception as e:
        print(e)


if __name__ == "__main__":
    with open('downloadhlt.txt') as file:
        urls = file.read().split("\n")
    results = ThreadPool(8).imap_unordered(download, urls)
    c = 0
    for i in results:
        c += 1
        print("Downloaded {} file{} so far".format(c, "" if c == 1 else "s"))


print("Elapsed Time: {} seconds\nDownloaded {} files".format(timer() - s, c))