【发布时间】:2011-07-18 06:58:58
【问题描述】:
我写了一些代码来从 URL 下载一些文件,我把它放在一个 dict 中,但是,当我运行脚本时,一切都运行良好,除了最后当它去下载文件时,它会创建一个文件使用其中一个名称,然后我看到该文件变得越来越大,然后又变小了。此文件 (mp4) 始终无法播放/损坏,并且只有一个,它永远不会移动到另一个。知道发生了什么吗?我的猜测是,python 以某种方式不断将不同的文件下载到一个本地文件并覆盖,但我不明白为什么。
代码如下:
import sys
import os
import re
import urllib
import urllib.request
urlfilebytes = urllib.request.urlopen('http://www.pbs.org/wgbh/nova/sciencenow/download/index.html')
urlfile = urlfilebytes.read().decode('utf-8')
urls = re.findall(r'(http://www-tc.pbs.org/wgbh/nova/sciencenow/media/downloads/\S+)"', urlfile)
print(urls)
names = re.findall(r'NSN_\S+.mp4', str(urls))
print(names)
names_to_urls = {}
for name in names:
for url in urls:
names_to_urls[name] = url
print(names_to_urls)
for key in names_to_urls.keys():
for value in names_to_urls.values():
urllib.request.urlretrieve(value, key)
【问题讨论】:
-
您的第一个循环将所有 dict 条目设置为最后一个 url。
标签: python dictionary python-3.x urllib