1.docopt模块的用法
1 #_*_ coding:utf-8 _*_
2
3
4 '''命令行的火车票查看系统5 Usage:6 index [-gdtkz] 7
8 Options:9 -h,--help 显示帮助10 -g 高铁11 -d 动车12 -t 特快13 -k 快速14 -z 直达15 Example:16 index 上海 北京 2018-5-2817
18
19
20 '''
21
22
23
24 from docopt importdocopt25
26 defcli():27 arguments= docopt(__doc__)28 print(arguments)29
30 if __name__=='__main__':31 cli()
注意:文档注释之前不能再有文档注释,不然会报类型错误
输出结果
2.处理命令行参数
命令行参数存储在变量sys.argv中。sys.argv列表中的第一项总是一个字符串,它包含程序的文件名(‘pw.py’)第二项应该是第一个命令行参数。
项目一:获取口令
准备知识-----pyperclip模块
>>> import pyperclip
>>> pyperclip.copy('Hello world!')
>>> pyperclip.paste()
'Hello world!'
当然,如果你的程序之外的某个程序改变了剪贴板的内容,paste()函数就会返 回它。
准备知识-----命令行参数
#! 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
if account in PASSWORDS:
pyperclip.copy(PASSWORDS[account])
print('Password for ' + account + ' copied to clipboard.')
else:
print('There is no account named ' + account)
1 #! python3
2
3 #pw.py - An insecure password locker program.
4
5 PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6',6
7 'blog': 'VmALvQyKAxiVH5G8v01if1MLZF3sdt',8
9 'luggage': '12345'}10
11 importsys12
13 if len(sys.argv) < 2:14
15 print('Usage: python pw.py [account] - copy account password')16
17 sys.exit()18
19 account = sys.argv[1] #first command line arg is the account name
20
21 if account inPASSWORDS:22
23 pyperclip.copy(PASSWORDS[account])24
25 print('Password for' + account + 'copied to clipboard.')26
27 else:28
29 print('There is no account named' + account)
实现功能:由于在登录是时长忘记密码,所以可以将器保存为一个.py文件,以字典的形式,然后通过字典与剪切版的结合实现密码账户的复制填充。
扩展:
在 Windows 上,你可以创建一个批处理文件,利用 Win-R 运行窗口,来运行 这个程序(关于批处理文件的更多信息,参见附录 B)。在文件编辑器中输入以下 代码,保存为 pw.bat,放在 C:\Windows 目录下:
@py.exe C:\Python34\pw.py %*
@pause
有了这个批处理文件,在 Windows 上运行口令保存程序,就只要按下 Win-R, 再输入 pw 。