假定你有一个无聊的任务,要填充一个网页或软件中的许多表格,其中包含一 些文本字段。剪贴板让你不必一次又一次输入同样的文本,但剪贴板上一次只有一 个内容。如果你有几段不同的文本需要拷贝粘贴,就不得不一次又一次的标记和拷 贝几个同样的内容。这无聊的工作几乎让人崩溃。
还好你学习了python,python最适合干这种活了。
复制和粘贴需要 pyperclip
模块, 读取命令行参数需要 sys
模块。将 Python 程序中的变量保存到二进制的 shelf
文件中会用到shelve
模块。shelve
模块让你在程序中添加“保存” 和“打开” 功能,方便程序下一次运行时加载变量。
该程序要做的事情如下:
假设你使用的windows环境,要运行该程序,你需要创建一个bat
批处理程序,使用组合键win + R
调出的运行窗口来运行该程序。bat
批处理文件内容如下:
@pythonw.exe D:\python\ch00_book\mcb.pyw %* :: 运行时替换路径即可
将程序进行分解,可以有效帮助我们去编写程序,让我们来编写一个脚本框架,他看起来是这样的。
#! python3
# mcb.pyw - 程序的名称,用来保存和加载多重剪切板
# 导入用到的模块
import shelve, pyperclip, sys
# 初始化 shelf 文件 mcb.
mcbShelf = shelve.open('mcb')
# 获取命令行参数
command = sys.argv[1].lower()
# TODO: 保存剪切板内容,并为每次复制的内容设置一个关键字.
# TODO: 列出所有关键字.
# TODO: 删除某个关键字,并清除该关键字对应的内容.
# TODO: 删除所有关键字,清空剪切板.
# TODO: 根据命令行参数,显示某关键字对应的内容.
mcbShelf.close()
下面依次补充每个步骤的命令
if command == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif command == 'list':
pyperclip.copy(", ".join(mcbShelf.keys()))
elif command == 'delete':
del mcbShelf[sys.argv[2]]
elif command == 'delete_all':
# 清空 shelf 文件
mcbShelf.clear()
# mcbShelf = shelve.open('mcb', flag='n')
# 清空剪切板
pyperclip.copy('')
elif sys.argv[1] in mcbShelf:
pyperclip.copy(mcbShelf[sys.argv[1]])
else:
pyperclip.copy('Sorry, You have input a wrong keyword.')
import shelve
import pyperclip
import sys
mcbShelf = shelve.open('mcb')
command = sys.argv[1].lower()
if command == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif command == 'list':
pyperclip.copy(", ".join(mcbShelf.keys()))
elif command == 'delete':
del mcbShelf[sys.argv[2]]
elif command == 'delete_all':
# 清空 shelf 文件
mcbShelf.clear()
# mcbShelf = shelve.open('mcb', flag='n')
# 清空剪切板
pyperclip.copy('')
elif sys.argv[1] in mcbShelf: # 如果命令行参数是关键字
pyperclip.copy(mcbShelf[sys.argv[1]])
else: #如果命令行参数不是关键字
pyperclip.copy('Sorry, You have input a wrong keyword.')
mcbShelf.close()