[Tutor] updating a Csv file

Albert-Jan Roskam fomcl at yahoo.com
Wed Oct 20 11:05:06 CEST 2010


Hi all,



How can I update a csv file? I've written the code below, but it does 
not work ("Error: line contains NULL byte"). I've never tried opening a 
file in read and write mode (r+) at the same time before, so I suspect 
that this is the culprit. Should I instead just open one file, write to 
another, throw away the original and rename the new file? That seems 
inefficient.



import csv, string



def updateLine(idVar, idValue, myCsv, newLine):

    f = open(myCsv, "r+")

    r = csv.reader(f)

    w = csv.writer(f)

    header = r.next()

    idPos = header.index(idVar)

    for row  in r:

        if row[idPos] == idValue:

            row = newLine

            w.writerow(row)

    f.close()



updateLine(idVar = "Id",

           idValue = "hawxgXvbfu",

           myCsv = "c:/temp/someCsv.csv",

           newLine = [ch for ch in string.letters[0:9]])

Cheers!!

Albert-Jan



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

All right, but apart from the sanitation, the medicine, education, wine,
 public order, irrigation, roads, a fresh water system, and public 
health, what have the Romans ever done for us?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20101020/32f7cf03/attachment.html>


More information about the Tutor mailing list