模拟C和Pascal的结构体实现的Employee类,可以从cvs文件读取信息并搜索
'''Class_StructEmp2_file.py
mimic a C Structure or Pascal Record using a class
load the data from a csv type file like this:
John Q. Johnson,computer research,3500
Loyd Tetris,Human Resources,6000
Mark Marksman,external development,4800
tested with Python27 and Python32  by  vegaseat
'''
class Employee():
    """
    mimics a C Structure or Pascal Record
    """
    def __init__(self, name, dept, salary):
        self.name = name
        self.dept = dept
        self.salary = salary
def by_last_name(record):
    """
    helper function to sort by last name
    assume names are "first middle last"
    """
    return record.name.split()[-1]
def by_department(record):
    """
    helper function to sort by department case-insensitive
    """
    return record.dept.lower()
# load the data file
fname = "employee_data.txt"
with open(fname, "r") as fin:
    employee_data = fin.readlines()
record_list = []
for line in employee_data:
    line = line.rstrip()
    #print(line, type(line), line.split(','))  # test
    name, dept, salary = line.split(',')
    #print(name, dept, salary)  # test
    record_list.append(Employee(name, dept, salary))
print("Employee names:")
# explore the record_list by instance
for emp in record_list:
    print(emp.name)
print('-'*35)
print("Employee names sorted by last name:")
# sort the records by last name using a helper function
for emp in sorted(record_list, key=by_last_name):
    print(emp.name)
print('-'*35)
print("High paid employees:")
# list the folks that get more than $4000 salary per month
for emp in record_list:
    if float(emp.salary) > 4000:
        print("%s gets more then $4000 a month" % emp.name)
print('-'*35)
print("Sorted by department:")
# sort the records by case insensitive department name
for emp in sorted(record_list, key=by_department):
    print("%s works in %s" % (emp.name, emp.dept))
”’result –>
Employee names:
John Q. Johnson
Loyd Tetris
Mark Marksman
———————————–
Employee names sorted by last name:
John Q. Johnson
Mark Marksman
Loyd Tetris
———————————–
High paid employees:
Loyd Tetris gets more then $4000 a month
Mark Marksman gets more then $4000 a month
———————————–
Sorted by department:
John Q. Johnson works in computer research
Mark Marksman works in external development
Loyd Tetris works in Human Resources
”’
