I'm trying an employee to employees csv file, unless I already have his data there. In tht case, I want to raise an error to the user. When I run the code I don't get any error but the employee is not added as well. Thanks for any help!
import csv
class Employee(object):
def __init__(self, employee_id, name, phone, age):
self.employee_id = employee_id
self.name = name
self.phone = phone
self.age = age
class Employees_list(object):
def __init__(self, list_of_employees):
self.list_of_employees = list_of_employees
def add_employee(self, new_employee):
new_employee_data = [new_employee.employee_id, new_employee.name, new_employee.phone, new_employee.age]
with open(self.list_of_employees) as file1:
existing_lines = csv.reader(file1)
for row in existing_lines:
if row not in new_employee_data:
new_employee_data.append(row)
else:
print("Sorry, the employee is already exist.")
You got the comparison backwards. if row not in new_employee_data
asks if the entire row of an existing employee is in any single piece of new employee information. Instead ask if the new employee is in any existing rows. I moved the check outside of the with
. Once you've read the csv, there is no need to keep it open.
def add_employee(self, new_employee):
new_employee_data = [new_employee.employee_id, new_employee.name, new_employee.phone, new_employee.age]
with open(self.list_of_employees) as file1:
existing_lines = csv.reader(file1)
if new_employee_data not in existing_lines:
new_employee_data.append(row)
# todo: save the new csv
else:
print("Sorry, the employee is already exist.")
Notice of course that if there are any differences in spelling the new and existing employee informtion, this will fail.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.