python自己动手制作一个密码管理工具----非加密

一. 所支持功能

python脚本命名为passwd.py

  1. help
    使用help可以查看脚本介绍。用法脚本名+help:
    ./passwd help
  2. set
    使用set增加密码或修改密码。用法脚本名+set+密码索引+密码:
    ./passwd set QQ xxxxx
  3. get
    使用get获得已存在的密码。用法脚本名+get+密码索引:
    ./passwd get QQ
  4. list
    使用list获得已存在的密码索引。用法脚本名+list:
    ./passwd list
  5. del
    使用del删除指定的密码索引。用法脚本名+del+密码索引:
    ./passwd del QQ

二. 代码

import shelve
import sys

op_can_be = ('set', 'get', 'list', 'del', 'help')

def usage():
    print('usage: -----------------------')
    print("python name: passwd.py")
    print("option can select: set/get/list/del ")
    print("set:   ./passwd.py set QQ sanshi7777777")
    print("get    ./passwd.py get QQ")
    print("list:  ./passwd.py list")
    print("del:   ./passwd.py del QQ")
    print("help:  ./passwd.py help")

def happen_error():
    print("wrong use\n")
    usage()
    sys.exit()

def main():
    #使用shelve文件保存数据
    passwd_text = shelve.open('passwd')
    
    try:
    
        #检查参数有效性,并得到操作类型
        op_type = sys.argv[1]
        if (op_type not in op_can_be):
            happen_error()


        #list和help操作不需要密码索引
        if (op_type not in ('list', 'help')):
            passwd_index = sys.argv[2]
            exist = passwd_index in passwd_text


        #定义各自类型各自的操作
        if (op_type == 'get'):
            if (exist):
                print("[%s]'s passwd is [%s]" %(passwd_index ,passwd_text[passwd_index]))
            else:
                print(passwd_index+' not exist')
        elif (op_type == 'set'):
            passwd = sys.argv[3]
            if (exist):
                print("before [%s]'s passwd is [%s]" %(passwd_index, passwd_text[passwd_index]))
            else:
                print(passwd_index+' before is not exist, now begin set')
            passwd_text[passwd_index] = passwd
            print("set[%s] to [%s]" %(passwd_index, passwd_text[passwd_index]))
        elif (op_type == 'list'):
            for passwd_index in passwd_text.keys():
                print(passwd_index)
        elif (op_type == 'help'):
            usage()
        else:
            if (exist):
                passwd = passwd_text.pop(passwd_index)
                print("passwd_index:%s" %(passwd_index))
                print("passwd:%s" %(passwd))
                print("this item have been delete")
            else:
                print(passwd_index+' not exist')

        #关闭文件
        passwd_text.close()

    except Exception:
        happen_error()

if (__name__ == '__main__'):
    main()

三. 简单介绍

  1. 使用sys模块来获取命令行参数。
  2. 使用shelve将程序数据进行保存,shelve默认可读可写。shelve保存时相当于字典,一个索引对应一系列数据。
  3. 所有操作基本与操作字典相同。
  4. shelve保存数据在文本中,要想对数据加密,还需要了解数据加密相关。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值