При сохранении csv файла теряются данные
уважаемые.
Есть задача сохранять сообщения пользователя для дальнейшего анализа. Данные сохраняются в csv файл.
# Открываем файл с данными пользователя
csv_file = pd.read_csv(pathID, index_col=[0], error_bad_lines=False)
# Удаляем файл с данными пользователя
os.remove(pathID)
# Создаём список для загрузки в него колонок
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] = ''
recordable_words = {}
recordable_words['Data'] = datetime.datetime.now() #time_now
recordable_words['ID'] = message.from_user.id
recordable_words['Name'] = message.from_user.first_name
list_of_column_names = []
for row in csv_file:
list_of_column_names.append(row)
for i in user_message:
if i not in recordable_words:
recordable_words[i] = 1
else:
recordable_words[i] = recordable_words[i] + 1
csv_file = csv_file.append(recordable_words, ignore_index=True)
csv_file.to_csv(pathID, index=False)
# Для тестов сохраняем рядом txt файл
pathID = path + "/" + str(message.from_user.id) + r".txt"
with open(pathID, "a") as myfile:
myfile.write(str(recordable_words) + '\n')
Как это работает:
- собираем колонки в список
- Если слова нет в списке- добавляем пустую колонку
- проходимся по словам и проставляем сколько раз за сообщение оно было использовано
- Всё это дело сохраняем.
Данный формат мне очень удобен в дальнейшей обработке.
Всё сохраняется, но есть огромная проблема:
- При сохранении данных в csv часть данных просто теряется. Точно каждый раз пишется время/дата, но их нет, если файл перезаписывается много раз. А хранить данные нужно точно не теряя. Пробовал:
- Удалять файл csv после прочтения. Не помогло Как Я понял, что данные верно сохраняются:
- Я рядом начал построчно писать в txt и там данные есть.
Есть идеи как решить данную проблему? Спасибо.
Источник: Stack Overflow на русском