При сохранении csv файла теряются данные

Рейтинг: 0Ответов: 0Опубликовано: 12.04.2023

уважаемые.

Есть задача сохранять сообщения пользователя для дальнейшего анализа. Данные сохраняются в 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 и там данные есть.

Есть идеи как решить данную проблему? Спасибо.

Ответы

Ответов пока нет.