看了简明python教程,动手试试,用python实现一个简单的地址簿
版本一
这只是一个简单的试验版本,如何新建对象并保存。
#!/usr/bin/python
# Filename: addressBook.py
import cPickle as pickle
class PersonInfo:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '姓名:%s,年龄:%s' % (self.name, self.age)
addrFileName = 'address.data'
addrList = {}
pi = PersonInfo('Fatkun', 23)
addrList[pi.name] = pi
pi = PersonInfo('Olunx', 22)
addrList[pi.name] = pi
addrFile = file(addrFileName, 'w')
pickle.dump(addrList, addrFile)
addrFile.close()
del pi
addrFile = file(addrFileName)
storedPi = pickle.load(addrFile)
for key, pi in storedPi.items():
print pi
版本2
这个版本是较完整的例子,实现了多个方法。
#!/usr/bin/python
# -*- coding: gbk -*-
# Filename: addressBook.py
import cPickle as pickle
import sys
class PersonInfo:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '姓名:%s,年龄:%s' % (self.name, self.age)
#读取文件
def readObj(addrFileName):
addrFile = file(addrFileName)
storedList = pickle.load(addrFile)
return storedList
#添加或更新
def addOrUpdatePerson(name, age):
global addrList
pi = PersonInfo(name, age)
addrList[name] = pi
#保存对象到文件
def save(addrFileName):
global addrList
addrFile = file(addrFileName, 'w')
pickle.dump(addrList, addrFile)
addrFile.close()
def delPersion(name):
global addrList
#if addrList.has_key(name): 可以用这个判断是否有key,但我想练习一下捕捉异常,so...
try:
del addrList[name]
except KeyError:
print "出错啦,可能已经删除了。\n"
#遍历
def printAll():
global addrList
for key, pi in addrList.items():
print pi
#保存对象的文件名
addrFileName = 'address.data'
#map
addrList = readObj(addrFileName)
if len(sys.argv) < 2:
printAll()
elif sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
if option == 'version':
print 'Version 1.0'
elif option == 'help':
print '''\
这只是一个简单的地址簿(坑爹啊,哪里有地址了,就一个名字和年龄)
参数:
--version : 打印版本
--help : 显示帮助
-a username age :添加
-u username age :更新
-d username : 删除
'''
else:
print '未知参数'
elif sys.argv[1].startswith('-'):
option = sys.argv[1][1:]
if option == 'a':#添加
if len(sys.argv) == 4:
addOrUpdatePerson(sys.argv[2],sys.argv[3])
elif option == 'u':#更新
if len(sys.argv) == 4:
addOrUpdatePerson(sys.argv[2],sys.argv[3])
elif option == 'd':#删除
if len(sys.argv) == 3:
delPersion(sys.argv[2])
printAll()
save(addrFileName)