Проблема с повторным открытием CSV после добавления к нему данных в Python

У меня есть эта рабочая кнопка, и она сохраняется, но моя проблема в том, что я могу снова запустить свою программу tkinter из того же файла. Это работает, и, если нужно, могу поделиться им, но цикл отделяется от CSV для моих столбцов в tkinter. Просто не могу заставить мой скрипт python прочитать его снова после добавления к нему данных.

      filePath = '..\glucose_values.csv'

    #Variables
    File = open(filePath)
    f =open(filePath)
    Reader = csv.reader(File)
    newline='\n'
    Data= list(Reader)
    main_lst=[]
    lst=[]

  
#Store Button Function
    def store():
        with open('..\glucose_values.csv', "a", encoding='utf-8') as f:
            Writer= csv.writer(f)
            Writer.writerow(main_lst)
            messagebox.showinfo("Information","Saved succesfully")
           # df= pd.DataFrame(Data)
           # df.to_csv(f)
        return None
    
    
    
    def Add():
       #working
       lst=[timeEnter.get()]
       lst2=[dateEnter.get()]
       lst3=[bloodEnter.get()]
       main_lst.extend(lst+ lst2+lst3)
       print(lst)
       messagebox.showinfo("Information","The data has been added successfully")
       print(main_lst)
       return None
    
    def saveMe ():
        Add()
        global File
        #File =
        return None
    
    #GRab column informatin
    list_of_dates = []
    list_of_times =[]
    list_of_blood=[]
    #list_of_
    for x in list(range(0, len(Data))):
        list_of_dates.append(Data[x][0])
        list_of_times.append(Data[x][1])
        list_of_blood.append(Data[x][2])

1 ответ

Цикл for более сложный, чем вам нужно, попробуйте что-то вроде:

      >>> l = ['a', 'b', 'c']
>>> for i in range(len(l)):
...     print(l[i])
... 
a
b
c

нет необходимости в list(range(0, len(Data)))

также не используйте глобальный File.

Создайте метод для чтения данных и другой для сохранения данных и откройте файл по мере необходимости, например:

      def read_data(filePath):
    with open(filePath) as myCsvFile:
        reader = csv.reader(myCsvFile)
        data = list(reader)

    return data 

с использованием withвы уверены, что ресурс (файл) закрывается, когда вы его больше не используете

Наконец, постарайтесь не использовать верхний регистр для экземпляров переменных https://peps.python.org/pep-0008/#naming-conventions.

Другие вопросы по тегам