добавление существующей строки в txt-файл

У меня есть программа для хранения имени лица и его оценки в файле txt на python.

например, это мой текущий код:

name = input("Name: ") score = input("Score: ") file_name = "student_scores.txt" file = open(file_name , 'a') file.write(str(name) + ", " + str(score) + "\n") file.close() 

Выходной файл txt: (name = bob) и (оценка = 1):

 bob, 1 

Когда я вхожу в другой счет (2) для одного и того же человека (bob), txt-файл выглядит так:

 bob, 1 bob, 2 

Однако как я могу изменить свой код, так что txt-файл выглядит так:

 bob, 1, 2 

3 Solutions collect form web for “добавление существующей строки в txt-файл”

Храните данные существующего файла в словаре с именем в качестве ключа и списком баллов как значения. Этот код будет хранить существующие данные в словаре, добавлять к нему новый балл и записывать словарь в файл с правильным форматированием.

 import os from collections import defaultdict def scores_to_dict(file_name): """Returns a defaultdict of name / list of scores as key / value""" if not os.path.isfile(file_name): return defaultdict(list) with open(file_name, 'r') as f: content = f.readlines() content = [line.strip('\n').split(', ') for line in content] temp_dict = {line[0]: line[1:] for line in content} d = defaultdict(list) d.update(temp_dict) return d name = input("Name: ") score = input("Score: ") d = scores_to_dict('student_scores.txt') d[name].append(score) with open('student_scores.txt', 'w') as f: for k, v in d.items(): f.write(', '.join([k] + v) + '\n') 

К сожалению, с обычными текстовыми файлами вам нужно будет переписать содержимое файла, чтобы вставить его в середину. Вы можете просто обработать файл, чтобы получить нужный результат в конце, а не вставлять его в середину файла.

Вы не можете добавить к строке, однако вы можете перезаписать часть строки. Если вы оставите кучу пробелов в конце строки, чтобы вы могли записать, например, 5 баллов и обновить строку на месте. Для этого откройте файл «rw» для чтения-записи, затем прочитайте до тех пор, пока вы не прочитаете строку оценки боба. Затем вы можете искать назад по длине линии bob и переписывать ее своими новыми оценками.

Тем не менее, если нет конкретной причины использовать текстовый формат, вам будет лучше использовать файл базы данных sqlite.

  • Как вы вычисляете корреляцию между всеми столбцами в DataFrame и всеми столбцами в другом DataFrame?
  • Что такое символ @ @ в Python?
  • Python3.4 о Sublime Text 3
  • Преобразование png в jpeg с помощью Pillow в python
  • Apache Spark: как использовать pyspark с Python 3
  • Правильное использование оператора * в операторе online if python
  • Python - печать словаря в виде горизонтальной таблицы с заголовками
  • sys.argv как байты в Python 3k
  • Python 3: Как объект может быть экземпляром типа?
  • код python 2: если python 3, то sys.exit ()
  • Dict порядок в python 3.6 против старшего
  • Python - лучший язык программирования в мире.