我正在try 弄清楚如何使用Python下载CSV文件中列出的文件,并使用CSV文件来命名下载.因此,我的CSV文件将如下所示:

HTTP://www.example.com/filetodownload.jpg,mypicture1.jpg
HTTP://www.example.com/2ndfiletodownload.jpg,mypicture2.jpg

该脚本将读取CSV文件,从第一个字段下载该文件,并使用第二个字段中的值为其命名.它将在CSV文件中循环,直到结束.

有谁有什么建议吗?

编辑:我没有包括我到目前为止所拥有的……很抱歉.这将下载文件,但不会使用逗号后的值重命名它们.

import csv, sys
import requests
import urllib2
import os

filename = 'test.csv'
with open(filename, 'rb') as f:
    reader = csv.reader(f)
    try:
        for row in reader:
            if 'http' in row[0]:
                #print row
                rev  = row[0][::-1]
                i  = rev.index('/')
                tmp = rev[0:i]
                #print tmp[::-1]
                rq = urllib2.Request(row[0])
                res = urllib2.urlopen(rq)
                if not os.path.exists("./"+tmp[::-1]):                
                    pdf = open("./" + tmp[::-1], 'wb')
                    pdf.write(res.read())
                    pdf.close()
                else:
                    print "file: ", tmp[::-1], "already exist"
    except csv.Error as e:
        sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))

推荐答案

您可以使用requests模块下载文件,使用csv模块读取CSV文件.下面是一个非常简单的例子:

import csv
import requests

filename = "file.csv"


with open(filename, 'r') as file:
  # Get list from csv file
  csvFile = csv.reader(file)

  # data of download
  dat = None
  for item in csvFile:
      # get the length of the list
      args = len(item)

      pairs = args // 2
      for i in range(pairs):
          
        try:
          dat = requests.get(item[i], timeout=0.5)
        except:
          continue
        dat = dat.content
        with open(item[i+1], "wb") as download:
          download.write(dat)

Python相关问答推荐

Inquirer库不适用于Pyterfly

云上Gunicorn的Flask-socketIO无法工作

绘制系列时如何反转轴?

如何终止带有队列的Python进程?+ 队列大小的错误?

DuckDB将蜂巢分区插入拼花文件

如何使用上下文管理器创建类的实例?

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

我从带有langchain的mongoDB中的vector serch获得一个空数组

将jit与numpy linSpace函数一起使用时出错

难以在Manim中正确定位对象

如何避免Chained when/then分配中的Mypy不兼容类型警告?

使用miniconda创建环境的问题

用Python解密Java加密文件

我对我应该做什么以及我如何做感到困惑'

如何在表中添加重复的列?

在Django admin中自动完成相关字段筛选

当我try 在django中更新模型时,模型表单数据不可见

如何启动下载并在不击中磁盘的情况下呈现响应?

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

如何在Python中使用另一个数据框更改列值(列表)