[英]python - Download files and rename them based on csv
我有一个使用Google表格创建的csv文件。 它有两列:A列用于文件链接,B列用于名称。 我在网站上发现此代码可以使用:
import csv
import urllib.request
with open('c:\\links.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
fileurl = row[0]
filename = row[1]
urllib.request.urlretrieve(fileurl, "E:\\" + filename)`
但它只会下载csv文件的最后一行。 我正在使用Python 3,并且是编码的新手。
在循环的每次迭代中,您都会覆盖最后的赋值,因此,循环结束后,您会将最后一行放入变量中。
您可以在循环内检索url,然后继续请求的逻辑,这样,每一行都将请求相关的url。
请求每个网址后,我建议将其存储在列表中,因此在循环结束后,您将所有结果存储在名为res
的列表中
import csv
import urllib.request
res = []
with open('c:\\links.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
fileurl = row[0]
filename = row[1]
res.append(urllib.request.urlretrieve(fileurl, "E:\\" + filename))
...
这是因为filename和fileurl变量每次都更新,并且当它们退出循环时,它们包含最后一行。 要处理每一行,请在循环中添加最后一行。
将对urllib.request.ulrretrieve
的调用移入循环。 我认为这将产生最接近您预期的效果。 每次迭代时, fileurl
和filename
变量都会更改以匹配.csv中的条目。
import csv
with open('c:\\links.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
for row in reader:
fileurl = row[0]
filename = row[1]
urllib.request.urlretrieve(fileurl, "E:\\" + filename)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.