Search code examples
pythoncsvrow

How to remove the second line of a CSV file using Python


I need to remove the second line of my csv file.

I am using the code below but unfortunately it doesn't work.

data = ""
adresse = "SLV.csv"

if os.path.exists(adresse) :
    f = open(adresse,"ab")
    writer = csv.writer(f,delimiter = ",") 
    reader = csv.reader(open(adresse,"rb") , delimiter = ",")


    for line in reader:

        if reader.line_num == 2:    
            writer.writerow(line) 

    f.close()

Solution

  • write to a temp file and update the original after:

    if os.path.exists(adresse) :
        with open(adresse,"r") as f,open("temp.csv" "a+") as temp:    
            writer = csv.writer(temp,delimiter = ",")
            reader = csv.reader(f , delimiter = ",")
            for ind, line in enumerate(reader):
                if ind == 2:
                    continue
                else:
                   temp.writerow(line)
            temp.seek(0)
            with open(adresse,"w") as out:
                reader = csv.reader(temp , delimiter = ",")
                writer = csv.writer(out,delimiter = ",")
                for row in reader:
                    writer.writerow(line)
    

    If the files can be read into memory just call list on reader and remove the second element:

    if os.path.exists(adresse) :
        with open(adresse,"r") as f:
            reader = list(csv.reader(f , delimiter = ","))
            reader.pop(1)
            with open(adresse,"w") as out:
                writer = csv.writer(out,delimiter = ",")
                for row in reader:
                    writer.writerow(row)