Проблема с повторным открытием 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.