6.3 项目:口令保管箱

6.3 项目:口令保管箱,第1张

6.3 项目:口令保管箱

本章项目
这是本书的第一个章内项目。以后,每章都会有一些项目,展示该章介绍的一些概念。这些项目的编写方式,让你从一个空白的文件编辑器窗口开始,得到一个完整的、能工作的程序。就像交互式环境的例子一样,不要只看项目
的部分,要注意计算机的提示!

第 1 步:程序设计和数据结构
你希望用一个命令行参数来运行这个程序,该参数是账号的名称。例如,账号的口令将拷贝到剪贴板,这样用户就能将它粘贴到口令输入框。通过这种方式,用户可以有很长而复杂的口令,又不需要记住它们。
打开一个新的文件编辑器窗口,将该程序保存为 pw.py。程序开始时需要有一行#!(参见附录 
B),并且应该写一些注释,简单描述该程序。因为你希望关联每个账号的名称及其口令,所以可以将这些作为字符串保存在字典中。字典将是组织你的账号和口令数据的数据结构。让你的程序看起来像下面这样:
#!  python3
#  pw.py  -  An  insecure  password  locker  program.

PASSWORDS  =  {'email':  'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog':  
'VmALvQyKAxiVH5G8v01if1MLZF3sdt', 'luggage':  '12345'}


第 2 步:处理命令行参数
命令行参数将存储在变量 sys.argv  中(关于如何在程序中使用命令行参数,更多信息请参见附录 B)。sys.argv  列表中的第一项总是一个字符串,它包含程序的文件名
('pw.py')。第二项应该是第一个命令行参数。对于这个程序,这个参数就是账户名称,你希望获取它的口令。因为命令行参数是必须的,所以如果用户忘记添加参数(也就是说,如果列表中少于两个值),你就显示用
法信息。让你的程序看起来像下面这样:

#!  python3
#  pw.py  -  An  insecure  password  locker  program.

PASSWORDS  =  {'email':  'F7minlBDDuvMJuxESSKHFhTxFtjVB6', 'blog':  
'VmALvQyKAxiVH5G8v01if1MLZF3sdt', 'luggage':  '12345'}

import  sys
if  len(sys.argv)  <  2:
print('Usage:  python  pw.py  [account]  -  copy  account  password') sys.exit()

account  =  sys.argv[1]  #  first  command  line  arg  is  the  account  name

第 3 步:复制正确的口令
既然账户名称已经作为字符串保存在变量 account  中,你就需要看看它是不是 PASSWORDS 字典中的键。如果是,你希望利用 
pyperclip.copy(),将该键的值复制到剪贴板(既然用到了pyperclip 模块,就需要导入它)。请注意,实际上不需要account变量,你可以在程序中所有使用 account 
的地方,直接使用 sys.argv[1]。但名为 account的变量更可读,不像是神秘的 sys.argv[1]。
让你的程序看起来像这样:
#!  python3
#  pw.py  -  An  insecure  password  locker  program. PASSWORDS  =  {'email':  
'F7minlBDDuvMJuxESSKHFhTxFtjVB6',
'blog':  'VmALvQyKAxiVH5G8v01if1MLZF3sdt', 'luggage':  '12345'}

import  sys,  pyperclip
if  len(sys.argv)  <  2:
print('Usage:  py  pw.py  [account]  -  copy  account  password') sys.exit()

account  =  sys.argv[1]  #  first  command  line  arg  is  the  account  name

if  account  in  PASSWORDS: pyperclip.copy(PASSWORDS[account])
print('Password  for  '  +  account  +  '  copied  to  clipboard.') else:
print('There  is  no  account  named  '  +  account)
这段新代码在PASSWORDS 
字典中查找账户名称。如果该账号名称是字典中的键,我们就取得该键对应的值,将它复制到剪贴板,然后打印一条消息,说我们已经复制了该值。否则,我们打印一条消息,说没有这个名称的账号。
这就是完整的脚本。利用附录B 中的指导,轻松地启动命令行程序,现在你就有了一种快速的方式,将账号的口令复制到剪贴板。如果需要更新口令,就必须修改源代码的PASSWORDS 字典中的值。
当然,你可能不希望把所有的口令都放在一个地方,让某人能够轻易地复制。但你可以修改这个程序,利用它快速地将普通文本复制到剪贴板。假设你需要发出一些电子邮件,它们有许多同样的段落。你可以将每个段落作为一个
值,放在

PASSWORDS  字典中(此时你可能希望对这个字典重命名),然后你就有了一种方式,快速地选择一些标准的文本,并复制到剪贴板。
在 Windows 上,你可以创建一个批处理文件,利用 Win-R 运行窗口,来运行这个程序(关于批处理文件的更多信息,参见附录 B)。在文件编辑器中输入以下代码,保存为 pw.bat,放在 
C:Windows 目录下:
@py.exe  C:Python34pw.py  %* @pause
有了这个批处理文件,在Windows 上运行口令保存程序,就只要按下 Win-R,再输入 pw 。
 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5658507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存