本章项目
这是本书的第一个章内项目。以后,每章都会有一些项目,展示该章介绍的一些概念。这些项目的编写方式,让你从一个空白的文件编辑器窗口开始,得到一个完整的、能工作的程序。就像交互式环境的例子一样,不要只看项目
的部分,要注意计算机的提示!
第 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 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)