задача открыть csv файл, добавить столбцы, новые данные и сохранить.
У меня все данные сохраняются не корректно. Все строки показывают, что есть данные только на первых столбцах. Остальные пустые.
Как Вы делаете, что бы данные корректно сохранялись?
# Если нужно колонки нет- мы её добавим
csv_file = pd.read_csv(pathID, index_col=[0])
# Создаём список для загрузки в него колонок
list_of_column_names = []
# Загружаем
for row in csv_file:
list_of_column_names.append(row)
for i in user_message:
if i in list_of_column_names:
log_out(str(message.chat.id) + ": Элемент " + i + " есть в списке")
# Если колонки нет- мы её добавляем.
else:
log_out(str(message.chat.id) + ": Элемента " + i + " нет в списке. Добавляем его.")
csv_file[i] = 0
csv_file.to_csv(pathID)
recordable_words = {}
# Открываем файл
csv_file = pd.read_csv(pathID, index_col=[0])
# Считываем заново все колонки и записываем в файл.
list_of_column_names = []
# тут нужно записать данные времени и пользователя
for row in csv_file:
list_of_column_names.append(row)
# Заполняем технические поля
recordable_words['Year'] = int(time_now.year)
recordable_words['Month'] = int(time_now.month)
recordable_words['Day'] = int(time_now.day)
recordable_words['Weekday'] = int(time_now.weekday())
recordable_words['Hour'] = int(time_now.hour)
recordable_words['Minute'] = int(time_now.minute)
recordable_words['Second'] = int(time_now.second)
for locn in list_of_column_names:
for um in user_message:
# Если "колонка" есть в словаре:
if um in recordable_words:
# Если значение существует- прибавляем
if um == locn:
recordable_words[um] = int(recordable_words[um]) + 1
else:
# Если значение встречается в первый раз- выставляем 0.
recordable_words[um] = 0 # Я хз по какой причине тут нужен 0. По моей логике нужен 1. Но иначе данные на 1 больше, чем они есть.
#recordable_words[um] = recordable_words[um] + 1
try:
x = recordable_words[locn]
except:
recordable_words[locn] = 0
with open(pathID, "a", newline="") as file:
columns = recordable_words.keys()
print(columns)
writer = csv.DictWriter(file,
fieldnames=columns,
delimiter=',',
#restval=0,
extrasaction='ignore')
#writer.writeheader()
writer.writerow(recordable_words)