Сначала я покажу код, а ниже оставлю несколько комментариев об изменениях.
from csv import writer
import csv
def add(file_name, list_of_elem):
# Open file in append mode
with open(file_name, 'a+', newline = '') as write_obj:
# Create a writer object from csv module
csv_writer = writer(write_obj)
# Add contents of list as last row in the csv file
csv_writer.writerow(list_of_elem)
def remove():
idt = input("Enter ID : ")
with open('students.csv', 'r') as inp:
newrows = []
data = csv.reader(inp)
for row in data:
if row[0] != idt:
newrows.append(row)
with open('students.csv', 'w') as out:
csv_writer = writer(out)
for row in newrows:
csv_writer.writerow(row)
def display():
with open('students.csv','r') as f:
data = csv.reader(f)
for row in data:
print(row)
# List of strings
row_contents = [10,'mayur','Java','Tokyo','Morning']
add('students.csv', row_contents)
row_contents = [11,'mayur','Java','Tokyo','Morning']
add('students.csv', row_contents)
row_contents = [12,'mayur','Java','Tokyo','Morning']
add('students.csv', row_contents)
# Append a list as new line to an old csv file
display()
remove()
- Если ваш файл является CSV, вы должны использовать файл
text
вместо a binary
one. - Я изменил имя переменной
id
на ìdt
, потому что id
встроен для возврата идентичности объекта, и это не очень хорошая практика перезаписывать встроенные в функциях. - Чтобы удалить только строки со спецификацией c
idt
, вы должны прочитать весь файл, сохранить в var (list), удалить то, что вы хотите удалить, и только после этого сохранить результат .