快一个月木有更新了,在这段时间内,博主除了忙工作外,就一直在研究python编程,据圈内朋友闲聊,python应该是未来一个运维攻城狮除了shell以外必备的LINUX脚本语言,所以就硬着头皮,按照老男孩的python视频讲座,把自己的研究成果贴出来,目前还没学完,期待老男孩的讲座更加给力些。

PS: 1.老男孩的python视频讲座很不错,希望能继续免费下去。。。

2.博主编程很烂,有什么地方有问题,还请多多指教。。。

3.最近买了本PYTHON核心编程,啃书ing。。。

系统环境: Ubuntu 12.10 server 64-bit

PYTHON: Python 2.7.3

# mkdir python

# vi contact_list.txt

-------------------------

1 zhangsan IT 0001

2 lisi IT 0002

3 wangwu HR 0003

4 zhaoliu OP 0004

-------------------------

# vi staff_list.py

----------------------------------------------------

#!/usr/bin/env python#encoding:utf-8 # 支持中文输入import sysimport getpassimport shutilimport commandsimport timeimport fileinputstaff_list = 'contact_list.txt'# 参数配置user = 'admin'passwd = '123456's = file(staff_list)ss = s.readlines()a = file(staff_list,'a')counter = 0_counter = 0# 认证登陆while True:  # 计数器,超过3次强制退出  if counter <= 3:    # 空用户名判断    name = raw_input("please input your name: ").strip()    if len(name) == 0:      print "empty name,try again!"      continue    # 用户名密码判断,密码隐藏    # pwd =  raw_input("please input your password: ")    pwd = getpass.getpass('please input your password:')    if pwd == passwd and name == user:      print "Welcome to login,%s" %name    else:      print "name or password is not valid,please try again!"          counter +=1      continue    break  else:    print "exceeded 3 times user login..exit the script"    sys.exit()# 选择增删改查while True:  item = raw_input('''\033[36;1mWelcome to login %s, what do you want to do?-----------------------press 'p' for printpress 'a' for addpress 'd' for deletepress 'u' for updatepress 's' for selectpress 'q' for quit-----------------------please make your choise: \033[0m''' % user)      # 打印所有  if item == 'p':    while True:      user_select = open(staff_list,'r')      s_ = user_select.read()          print '                          '      print '\033[32;1mThe content of the file\033[0m '      print '\033[32;1m--------------------------\033[0m '      print s_      print '\033[32;1m--------------------------\033[0m '      print '                          '      break        # 增加  elif item == 'a':    while True:      user_add_num = raw_input(("\033[32;1mplease input your number: \033[0m ").strip())      user_add_name = raw_input(("\033[32;1mplease input your name: \033[0m ").strip())      user_add_dept = raw_input(("\033[32;1mplease input your department: \033[0m ").strip())      user_add_id = raw_input(("\033[32;1mplease input your id: \033[0m ").strip())      user_item = '%s\t%s\t%s\t%s' %(user_add_num,user_add_name,user_add_dept,user_add_id)      a.write("\n%s" %user_item)      a.flush()      print "\033[32;1mAdd item:\033[0m"      print "\033[32;1m------------------\033[0m"      print user_item      print "\033[32;1m------------------\033[0m"      print "\033[32;1mAdded successful!\033[0m"              # 删除空行      del_blank_in = open('contact_list.txt','r')      del_blank_out = open('contact_list_new.txt','w')      lines = del_blank_in.readlines()      for blank in lines:        if blank.split():          del_blank_out.writelines(blank)      del_blank_in.close()      del_blank_out.close()      # 覆盖原文件      shutil.move('contact_list_new.txt','contact_list.txt')      user_add_choise = raw_input('press Q for quit or press any key to continue: ')      if user_add_choise == 'Q':          print 'bye!'          break        # 删除  elif item == 'd':    while True:      user_del_input = raw_input("please input sth to delete: ").strip()      if len(user_del_input) == 0:        print "empty input,try again!"      else:        # 输入值与源文件比对,有则丢弃,没有则添加到新文件,最后新文件覆盖源文件,实现删除功能        with open('contact_list.txt','r') as ff:          with open('contact_list.txt.new','w') as gg:            for line in ff.readlines():              if user_del_input not in line:                gg.write(line)          if user_del_input in line:        print "\033[32;1mDelete item:\033[0m"        print "\033[32;1m------------------\033[0m"        print " %s " %line        _counter += 1 # 计数器,判断输入值命中次数        print "\033[32;1m------------------\033[0m"        print "\033[32;1mDeleted successful!\033[0m"        if _counter == 0:               print 'nothing delete!'        shutil.move('contact_list.txt.new','contact_list.txt')        # 退出删除        user_del_input_quit = raw_input("\033[32;1mpress Q for quit or press any key to continue? \033[0m").strip()        if user_del_input_quit == 'Q':            break               # 查询  elif item == 's':    while True:      match_yes = 0      #输入判断,忽略空格输入,加入颜色      user_select_input = raw_input("\033[32;1mplease input sth to search:\033[0m ").strip()      contact_file = file (staff_list)      if len(user_select_input) == 0:        print "empty input,try again!"      else:        while True:      line = contact_file.readline()          if len(line) == 0:          break      if user_select_input in line:          match_yes = 1          print line      else:          pass        if match_yes == 0 :          print "No match item found"      # 退出查询        user_select_input_quit = raw_input("\033[32;1mpress Q for quit or press any key to continue? \033[0m").strip()        if user_select_input_quit == 'Q':            break          # 修改  elif item == 'u':    while True:      # 输入为空以及匹配查询内容判断      user_update_input_from = raw_input("\033[32;1mplease search sth to update: \033[0m").strip()      update_match = 0      update_file = file(staff_list).readlines()      for n_ in range(len(update_file)):    if user_update_input_from in update_file[n_]:        update_match = 1    else:        pass      if update_match == 0:        print "No match item found"      elif len(user_update_input_from) == 0:        print "empty input,try again!"      else:    # 将匹配到的字符修改为新字符    while True:      user_update_input_to = raw_input("\033[32;1mupdate %s to what?\033[0m " %(user_update_input_from)).strip()      if len(user_update_input_to) == 0:            print "empty input,try again!"      else:        for line_ in fileinput.input(staff_list,inplace = 1,backup='.bak'):          line_ = line_.replace(user_update_input_from,user_update_input_to)          print line_        # 打印修改字符的行            print "\033[32;1mupdate item:\033[0m"            output_ = commands.getoutput("diff contact_list.txt contact_list.txt.bak|grep '^>.*' | sed 's/^>//g'")        print "\033[32;1m---------------------------\033[0m"            print output_        print "\033[32;1m---------------------------\033[0m"        print "\033[32;1mupdate successfully!\033[0m"            # 删除空行            del_blank_in = open('contact_list.txt','r')            del_blank_out = open('contact_list_new.txt','w')            lines = del_blank_in.readlines()            for blank in lines:          if blank.split():            del_blank_out.writelines(blank)            del_blank_in.close()            del_blank_out.close()            # 覆盖原文件            shutil.move('contact_list_new.txt','contact_list.txt')        break    # 退出更新    user_update_input_quit = raw_input("\033[32;1mpress Q for quit or press any key to continue? \033[0m").strip()        if user_update_input_quit == 'Q':        break                    # 退出  elif item == 'q':    print 'bye!'    sys.exit()      else:    print "\033[31;1mnot a valid key word\033[0m"    time.sleep(1)

-----------------------------------------------------