запись в открытой строке в CSV-файле

#python #csv #writing

Вопрос:

я пытаюсь создать код python, который берет имя, фамилию и специальность и помещает их в csv-файл. прямо сейчас у меня возникли проблемы, потому что этот код просто перезаписывает все, что находится в первой строке. Как мне заставить его найти последнюю строку и написать в ней?

 `import csv

read_write = input("ENTER 0 FOR WRITE OR 1 FOR READ: ")
print(read_write)

if (read_write < '1'): # write CSV
    outfile = open("group_info.csv", 'w', newline="")
    Fname = input("ENTER FIRST NAME: ")
    Lname = input("ENTER LAST NAME: ")
    Major = input("ENTER MAJOR: ")
    info = "{},{},{}n".format(Fname, Lname, Major)
    outfile.write(info)
outfile.close()`
 

Ответ №1:

Попробуйте изменить

 outfile = open("group_info.csv", 'w', newline="")
 

Для

 outfile = open("group_info.csv", 'a', newline="")
 

и посмотрим, поможет ли это вам 🙂 Не знаю , почему вы указываете newline="" , но у вас, вероятно, есть веская причина для этого — я бы не стал.

Ответ №2:

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

     outfile = open("group_info.csv", 'w', newline="")
 

Для

     outfile = open("group_info.csv", 'a', newline="")
 

Ответ №3:

Если вы хотите добавить новые данные в конец файла, вам нужно изменить свой код в строке 7 следующим образом:

 outfile = open("group_info.csv", 'a', newline="")
 

Он откроет файл в «режиме добавления», который откроет файл для записи, добавив его в конец файла, если он существует.

И почему ваш код перезаписывает все, что находится в первой строке?

Потому что, когда мы открываем файл, курсор указывает на данные файла. Ваша операция чтения или записи будет следовать за курсором. И курсор указывает на первую позицию, если вы открываете файл в режиме «w», поэтому ваша следующая операция записи перезаписывает первую строку ваших данных. Когда мы открываем файл в «режиме добавления», курсор будет указывать на предпоследнюю позицию файла, поэтому ваша следующая операция записи будет добавлена в конец файла.

Вы можете прочитать документацию по Python open , если вам нужно знать подробности.