栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

6.3 项目:口令保管箱

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 。
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号