Untitled

 avatar
unknown
python
3 years ago
3.0 kB
5
Indexable
import csv


def insert_person(person_file, first_name, last_name):
    if person_file == "" or first_name == "" or last_name == "":
        return None
    with open(person_file, 'r+', newline='\n') as f:
        reader = csv.DictReader(f)
        writer = csv.DictWriter(f, reader.fieldnames)
        for line in reader:
            last_index = line["Index"]
        last_index = int(last_index) + 1
        line_out1 = {"Index": last_index, "FirstName": first_name, "LastName": last_name}
        writer.writerow(line_out1)
        return last_index


def insert_colleague(person_file,
                     colleagues_file,
                     first_name,
                     last_name,
                     dept,
                     extension):
    if person_file == "" or first_name == "" or last_name == "" \
            or colleagues_file == "" or dept == "" or extension == "":
        return None
    index = insert_person(person_file, first_name, last_name)
    with open(colleagues_file, 'a', newline='') as f:
        writer = csv.writer(f)
        writer.writerow([index, dept, extension])
        return index


def insert_friend(person_file,
                  friends_file,
                  first_name,
                  last_name,
                  street,
                  city,
                  country,
                  phone):
    if person_file == "" or first_name == "" or last_name == "" \
            or friends_file == "" or street == "" or city == "" or country == "" or phone == "":
        return None
    index = insert_person(person_file, first_name, last_name)
    with open(friends_file, 'a', newline='') as f:
        writer = csv.writer(f)
        writer.writerow([index, street, city, country, phone])
        return index


def update_field(data_file, target, field_name, field_value):
    with open(data_file, 'r') as f_in:
        reader = csv.DictReader(f_in)
        fieldnames = reader.fieldnames
        if field_name not in fieldnames:
            return None
        text = list(reader)
        for i in text:
            if int(i['Index']) == target:
                i[field_name] = field_value
                with open(data_file, 'w', newline='') as f_out:
                    writer = csv.DictWriter(f_out, fieldnames)
                    writer.writeheader()
                    writer.writerows(text)
                return True
    return None


def delete_person(data_file, target):
    with open(data_file, 'r') as f_in:
        reader = csv.DictReader(f_in)
        fieldnames = reader.fieldnames
        text = list(reader)
        for k in text:
            if int(k['Index']) == target:
                text.remove(k)
                with open(data_file, 'w', newline='') as f_out:
                    writer = csv.DictWriter(f_out, fieldnames)
                    writer.writeheader()
                    writer.writerows(text)
                    return True
        return None
Editor is loading...