初學python,剛剛看完byte of python,結尾的地方有個例項是要建立自己的命令列位址簿程式,花了一天時間寫了乙個,環境是python 2.6,使用ulipad編寫。程式中沒有建立類來表示乙個人的資訊,只有簡單的名字和位址資訊格式,實現新增,刪除聯絡人和顯示位址簿資訊的功能,且也沒有進行異常處理。暫且如此,留待以後完善。
**如下:
#! /usr/bin/env python
#coding=utf-8
'''an example: addressbook command
'''import cpickle as p
import shutil
import os
abfile='ab.data'
abtempfile='abtemp.data'
def funprintoption():
print '1. print adressbook'
print '2. add to adressbook'
print '3. del from adressbook'
print '4. exit'
def funprintaddress():
f=file(abfile)
#ab=p.load(f)
lines = f.readlines()
for x in lines:
print x,
f.close()
def funstr2dict(b):
c = {}
c[b.split(':')[0]] = b.split(':')[1]
return c
def funaddtoaddress(**keys):
print "keys type=%s" % type(keys)
print "keys=%s" % str(keys)
shutil.copyfile(abfile, abtempfile)
ftmp = file(abtempfile,"r")
lines = ftmp.readlines()
for name,address in keys.items():
bskip = false
for x in lines:
dictx = funstr2dict(x.strip('\n'))
if dictx.has_key(name):#如果包含name就跳過
bskip = true
break
if bskip == true:
print 'the person %s is in this adressbook' % name
continue
abone =
f=file(abfile,'a')
#f.write(str(abone)+'\n')
f.write(name+':'+address+'\n')
f.close()
print 'add %s' % name
ftmp.close()
os.remove(abtempfile)
def fundelfromaddress(*keys):
print "keys type=%s" % type(keys)
print "keys=%s" % str(keys)
shutil.copyfile(abfile, abtempfile)
f = file(abfile,"w")
f.write('')
f.close()
ftmp = file(abtempfile,"r")
lines = ftmp.readlines()
i = 0
for x in lines:
dictx = funstr2dict(x.strip('\n'))
bskip = false
for name in keys:
if dictx.has_key(name):#如果包含name就跳過
bskip = true
break
if bskip == true:
print 'del %s' % name
continue
f = file(abfile,"a")
f.write(x)
f.close()
print 'the person %s is not in line %d' % (name, i)
i = i + 1
ftmp.close()
os.remove(abtempfile)
def fundelfromaddressmodify(*keys):
print "keys type=%s" % type(keys)
print "keys=%s" % str(keys)
if os.path.isfile(abtempfile) == false:
ftmp = file(abtempfile, "w")
ftmp.close()
f = file(abfile,"r")
lines = f.readlines()
i = 0
for x in lines:
dictx = funstr2dict(x.strip('\n'))
bskip = false
for name in keys:
if dictx.has_key(name):#如果包含name就跳過
bskip = true
break
if bskip == true:
print 'del %s' % name
continue
ftmp = file(abtempfile,"a")
ftmp.write(x)
ftmp.close()
print 'the person %s is not in line %d' % (name, i)
i = i + 1
f.close()
shutil.copyfile(abtempfile, abfile)
os.remove(abtempfile)
if __name__ == '__main__':
main()
ubuntu下命令列除錯Python程式
python提供類似於c gdb的除錯工具pdb,我們可以在linux下使用pdb在命令列下進行python程式的除錯。官方參考 python2 python3 一般地,我們可以使用如下的方式進入除錯 比如我們要除錯的原始檔為hello.py 1.在命令列啟動目標程式,加上 m引數。python m...
ubuntu下命令列除錯Python程式
python提供類似於c gdb的除錯工具pdb,我們可以在linux下使用pdb在命令列下進行python程式的除錯。官方參考 python2 python3 一般地,我們可以使用如下的方式進入除錯 比如我們要除錯的原始檔為hello.py 1.在命令列啟動目標程式,加上 m引數。python m...
python 命令列引數
本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....