usr bin env python coding utf-8 import sys class Students object def _

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
class Students(object):
def __init__(self):
self.all = self.read()
def add(self, oid, surname, firstname, patronymic, age, sex, birthplace, residence):
'''
Добавление нового студента.
'''
student = {}
student["surname"] = surname
student["firstname"] = firstname
student["patronymic"] = patronymic
student["age"] = age
student["sex"] = sex
student["birthplace"] = birthplace
student["residence"] = residence
self.all[oid] = student
def get(self, oid):
'''
Получение информации о конкретном студенте по его идентификатору.
'''
print "[{}] {} {} {}\n\tВозраст: {}\n\tПол: {}\n\tМесто рождения: {}\n\tМесто жительства: {}\n\n".format(oid, self.all[oid]["surname"], self.all[oid]["firstname"], self.all[oid]["patronymic"], self.all[oid]["age"], self.all[oid]["sex"], self.all[oid]["birthplace"], self.all[oid]["residence"])
def getAll(self):
'''
Вывод информации по всем студентам.
'''
for oid, student in self.all.items():
print "[{}] {} {} {}\n\tВозраст: {}\n\tПол: {}\n\tМесто рождения: {}\n\tМесто жительства: {}\n\n".format(oid, student["surname"], student["firstname"], student["patronymic"], student["age"], student["sex"], student["birthplace"], student["residence"])
def read(self):
'''
Системный метод. Читает из файла информацию о студентах.
'''
studentfile = open("./students.csv").read()
studentsRaw = studentfile.split("\n")
allStudents = {}
for studentRaw in studentsRaw:
studentList = studentRaw.split(";")
if len(studentList) != 8:
continue
student = {}
oid, student["surname"], student["firstname"], student["patronymic"], student["age"], student["sex"], student["birthplace"], student["residence"] = studentList
allStudents[oid] = student
if len(allStudents):
return allStudents
else:
return {}
def remove(self, oid):
'''
Удаляет из списка студента по его идентификатору.
'''
self.all.pop(oid)
def save(self):
'''
Сохраняет все внесенные изменения в файл.
'''
studentfile = open("./students.csv", "w")
for oid, student in self.all.items():
studentfile.write(oid + ";" + ";".join([student["surname"], student["firstname"], student["patronymic"], student["age"], student["sex"], student["birthplace"], student["residence"]]) + "\n")
studentfile.close()
def saveObj(self, oid, filename):
'''
Сохраняет информацию о студенте по его идентификатору.
'''
savefile = open(filename, "w")
savefile.write("[{}] {} {} {}\n\tВозраст: {}\n\tПол: {}\n\tМесто рождения: {}\n\tМесто жительства: {}\n\n".format(oid, self.all[oid]["surname"], self.all[oid]["firstname"], self.all[oid]["patronymic"], self.all[oid]["age"], self.all[oid]["sex"], self.all[oid]["birthplace"], self.all[oid]["residence"]))
savefile.close()
def oldest(self):
'''
Возвращает возраст самого старшего студента.
'''
return max([data["age"] for oid, data in self.all.items()])
def main(argv):
help = """Список возможных команд:
add - Добавить нового студента.
Входные параметры: id, фамилия, имя, отчество, возраст, пол, место рожденея, местро жительства
remove - Удалить студента из списка.
Входные параметры: id
get - Вывести информацию о студенте.
Входные параметры: id
getAll - Вывести информацию о всех студентах.
oldest - Выводит возраст самого взрослого студента.
save - Сохранить все внесенные изменения.
saveObj - Сохранить информацию о студенте в файл.
Входные параметры: id, путь до файла\n
help - Вывод этого сообщения.
"""
print help
students = Students()
while True:
user_command = raw_input("\nВведите команду: ")
args = None
if user_command.count(" "):
user_command, args = user_command.split(" ")[0], user_command.lstrip(user_command.split(" ")[0] + " ").split(", ")
if user_command == "add":
if args[0] in students.all:
print "Такой id уже существует!"
continue
try:
students.add(*args)
print "Студент добавлен."
except Exception, e:
print "Ошибкка при добавлении студента. ({})".format(e)
elif user_command == "remove":
try:
students.remove(*args)
print "Студент удален."
except Exception, e:
print "Ошибкка при удалении студента. ({})".format(e)
elif user_command == "get":
try:
students.get(*args)
except Exception, e:
print "Ошибкка при выводе информации о студенте. ({})".format(e)
elif user_command == "getAll":
try:
students.getAll()
except Exception, e:
print "Ошибкка при выводе информации о студентах. ({})".format(e)
elif user_command == "oldest":
try:
print "Возраст самого взрослого студента: {}".format(students.oldest())
except Exception, e:
print "Ошибкка при выводе информации о возрасте самого взрослого студента. ({})".format(e)
elif user_command == "save":
try:
students.save()
print "Все изменения сохранены."
except Exception, e:
print "Ошибкка при сохранении изменений. ({})".format(e)
elif user_command == "saveObj":
try:
students.saveObj(*args)
print "Информация о студенте сохранена."
except Exception, e:
print "Ошибкка при сохранении информации о студенте в файл. ({})".format(e)
elif user_command == "help":
print help
else:
print user_command, args
print "Такой команды не существует!"
return 1
if __name__ == "__main__":
main(sys.argv)