Attachment 'notepickle.py'
Download 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Записная книжка. В списке хранятся различные объекты Python, которые можно в него добавлять с клавиатуры (используется input()). Напишите программу, которая сохраняет ввод в файл, если видит специальную завершающую последовательность, и восстанавливает данные оттуда при последующем запуске.
5
6 Подсказка: input() — очень опасная функция, она выполняет eval() от введённой строки, следовательно, если вы определите функцию Quit() в программе, а потом введёте Quit() со стандартного ввода, то input() эту функцию выполнит!
7
8 Ввести ещё несколько функций, например, List(начало, конец) для просмотра пронумерованного списка (если параметры не указаны — всего) и Delete(начало, конец)
9 '''
10
11 import pickle,os
12
13 Notes,NoteName=[],"Notes.data"
14
15 if os.path.exists(NoteName):
16 NoteFile=file(NoteName)
17 Notes=pickle.load(NoteFile)
18 NoteFile.close()
19
20 def Quit():
21 global Cont, Data
22 Cont,Data=False,False
23
24 def List(start=0,end=None):
25 global Data
26 if end is None: end=len(Notes)
27 for i in xrange(start,end):
28 print "{0:3} {1}".format(i,Notes[i])
29 Data=False
30
31 def Delete(pos):
32 global Data
33 del Notes[pos]
34 Data=False
35
36 Cont=True
37
38 Data=True
39 while Cont:
40 Tip=Data and "OK> " or " > "
41 Data=True
42 try:
43 Obj=input(Tip)
44 except SyntaxError:
45 Data=False
46 except NameError, msg:
47 # Грязные хаки вместо того, чтобы просто использовать raw_input()
48 Obj=msg.args[0][6:-16]
49 except Exception, msg:
50 print msg
51 Data=False
52 if Data: Notes.append(Obj)
53
54 NoteFile=file(NoteName,"w")
55 pickle.dump(Notes,NoteFile)
56 NoteFile.close()
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.- [get | view] (2012-02-15 09:22:02, 2.2 KB) [[attachment:notepickle.py]]
- [get | view] (2012-02-14 21:12:45, 0.8 KB) [[attachment:ray_shuffle.py]]
- [get | view] (2012-02-15 09:22:37, 4.5 KB) [[attachment:sort_tape.py]]
You are not allowed to attach a file to this page.