Downloading multiple files based on info extracted from CSV
John Gordon
gordon at panix.com
Thu Dec 12 17:21:46 EST 2013
In <88346903-2af8-48cd-9829-37cedb717ae5 at googlegroups.com> Matt Graves <tunacubes at gmail.com> writes:
> import urllib
> import csv
> urls = []
> clientname = []
> ###This will set column 7 to be a list of urls
> with open('clients.csv', 'r') as f:
> reader = csv.reader(f)
> for column in reader:
> urls.append(column[7])
> ###And this will set column 0 as a list of client names
> with open('clients.csv', 'r') as g:
> reader = csv.reader(g)
> for column in reader:
> clientname.append(column[0])
> ###This SHOULD plug in the URL for F, and the client name for G.
> def downloadFile(urls, clientname):
> urllib.urlretrieve(f, "%g.csv") % clientname
> downloadFile(f,g)
> When I run it, I get : AttributeError: 'file' object has no attribute
> 'strip'
I think you're passing the wrong arguments to downloadFile(). You're
calling downloadFile(f, g), but f and g are file objects. Don't you want
to pass urls and clientname instead?
Even if the correct arguments are passed to downloadFile, I think you're
using them incorrectly. You don't even use the urls argument, and
clientname is supposed to be a list, so why aren't you looping through
it?
You aren't using string interpolation correctly on the call to urlretrieve.
Assuming your intent was to build a string and pass it as the second
argument, you have the close-parenthesis in the wrong place. The call
should look like this:
urllib.urlretrieve(f, "%g.csv" % clientname)
"%g" returns a floating-point value. Did you mean "%s" instead?)
--
John Gordon Imagine what it must be like for a real medical doctor to
gordon at panix.com watch 'House', or a real serial killer to watch 'Dexter'.
More information about the Python-list
mailing list