python命令列位址簿程式

2021-06-09 00:22:39 字數 3143 閱讀 1751

初學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....