Search code examples
pythoncsvcurloutputpython-2.x

How to read a CSV file from a URL with Python?


when I do curl to a API call link http://example.com/passkey=wedsmdjsjmdd

curl 'http://example.com/passkey=wedsmdjsjmdd'

I get the employee output data on a csv file format, like:

"Steve","421","0","421","2","","","","","","","","","421","0","421","2"

how can parse through this using python.

I tried:

import csv 
cr = csv.reader(open('http://example.com/passkey=wedsmdjsjmdd',"rb"))
for row in cr:
    print row

but it didn't work and I got an error

http://example.com/passkey=wedsmdjsjmdd No such file or directory:

Thanks!


Solution

  • You need to replace open with urllib.urlopen or urllib2.urlopen.

    e.g.

    import csv
    import urllib2
    
    url = 'http://winterolympicsmedals.com/medals.csv'
    response = urllib2.urlopen(url)
    cr = csv.reader(response)
    
    for row in cr:
        print row
    

    This would output the following

    Year,City,Sport,Discipline,NOC,Event,Event gender,Medal
    1924,Chamonix,Skating,Figure skating,AUT,individual,M,Silver
    1924,Chamonix,Skating,Figure skating,AUT,individual,W,Gold
    ...
    

    The original question is tagged "python-2.x", but for a Python 3 implementation (which requires only minor changes) see below.