CSV продолжает перезапись - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь составить программу быстрой бухгалтерии для своих родителей в Python. Вот как я хочу, чтобы это работало. Каждый раз, когда мои родители открывают эту программу, я хочу, чтобы она делала новую строку в файле excel. Проблема в том, что каждый раз, когда программа запускается, она перезаписывает себя. Ниже вы видите мой код

from tkinter import *
import csv
import pandas as pd

root = Tk()
root.title('Boekhouding 2020')
root.minsize(250, 100)
#Weeknummer
Label1 = Label(root, text= "Weeknummer").grid(row=1, column=1)
e1 = Entry(root)
e1.grid(row=1, column=2)
#Omschrijving
Label2 = Label(root, text= "Omschrijving").grid(row=2, column=1)
e2 = Entry(root)
e2.grid(row=2, column=2)
#Bedrag
Label3 = Label(root, text= "Bedrag").grid(row=3, column=1)
e3 = Entry(root)
e3.grid(row=3, column=2)



##  Exporteren naar Excel
def export(oms,bedrag,weeknummer):
    with open(r"C:\Users\frank\Desktop\Boekhouding.csv", 'w', newline='') as f:
        thewriter = csv.writer(f)
        row_export()
        thewriter.writerow([oms,bedrag,weeknummer])

## Klik definition
def myclick():
    mylabel = Label(root, text='Hello ' + e1.get())
    mylabel.grid(row=5, column=1)
    export(e2.get(),e3.get(),e1.get())

## Rowcounter
def row_export():
    with open(r"C:\Users\frank\Desktop\Boekhouding.csv",'r')as csv_file:
        fileObject = csv.reader(csv_file)
        for row in fileObject:
            print(row)
            export(row[0],row[1],row[2])



## All buttons
mybutton = Button(root, text="exporteren naar excel", command=myclick)
mybutton.grid(row=4, column=1)

root.mainloop()

Ответы [ 2 ]

3 голосов
/ 09 мая 2020

Из определения Python s open :

Character Meaning
   'r'    open for reading (default)
   'w'    open for writing, <b>truncating the file first</b>
   'x'    open for exclusive creation, failing if the file already exists
   'a'    open for writing, <b>appending to the end of the file if it exists</b>
   'b'    binary mode
   't'    text mode (default)
   '+'    open for updating (reading and writing)

Используйте правильный режим. 'w' всегда начинается с пустого файла. 'a' - правильный режим для постоянной записи в конец файла.

2 голосов
/ 09 мая 2020

Попробуйте «a» вместо «w» и сообщите, что произойдет. 'w' используется только для записи, и курсор не перемещается в конец файла, поэтому он перезаписывает

https://docs.python.org/3/library/functions.html#open

...