6

I'm developing an application to write lines to a CSV. However, when I run the application a second time, the line that was already written is overwritten with the new line. How can I make it so that the writer writes to the next blank line, not one that already has data in it? I haven't found anything on how to do this. Here's my code below:

listsof = [1, 2, 3, 4]
with open('C:/Users/Family3/Downloads/weather.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(listsof)
hichris123
  • 10,145
  • 15
  • 56
  • 70

2 Answers2

9

Try this instead (note the 'a' for append):

with open('C:/Users/Family3/Downloads/weather.csv', 'a', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(listsof)

The 'a' opens the file for appending and does not erase the already existing file with the same name.

Justin O Barber
  • 11,291
  • 2
  • 40
  • 45
2

It is because, whenever you open your csv file, you never take into account that you might already have data in your file. When you load your csvfile into your program, you should append your new data to the file instead of just writing to it.

Dyrborg
  • 877
  • 7
  • 16