繁体   English   中英

python-下载文件并基于csv重命名它们

[英]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的调用移入循环。 我认为这将产生最接近您预期的效果。 每次迭代时, fileurlfilename变量都会更改以匹配.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM