python学习-读写文件-多重剪贴板
- 题目 多重剪切板
- 代码
- 题目 扩展多种剪贴板
- 代码
题目 多重剪切板
假定你有一个无聊的任务,要填充一个网页或软件中的许多表格,其中包含一些文本字段。剪贴板让你不必一次又一次输入同样的文本,但剪贴板上一次只有一个内容。如果你有几段不同的文本需要拷贝粘贴,就不得不一次又一次的标记和拷贝几个同样的内容。
该程序将利用一个关键字保存每段剪贴板文本。例如,当运行 py mcb.pyw save spam,剪贴板中当前的内容就用关键字 spam 保存。通过运行 py mcb.pyw spam,这段文本稍后将重新加载到剪贴板中。如果用户忘记了都有哪些关键字,他们可以运行 py mcb.pyw list,将所有关键字的列表复制到剪贴板中。
下面是程序要做的事:
• 针对要检查的关键字,提供命令行参数。
• 如果参数是 save,那么将剪贴板的内容保存到关键字。
• 如果参数是 list,就将所有的关键字拷贝到剪贴板。
• 否则,就将关键词对应的文本拷贝到剪贴板。
这意味着代码需要做下列事情:
• 从 sys.argv 读取命令行参数。
• 读写剪贴板。
• 保存并加载 shelf 文件。
代码
下面展示代码
#! python3
# 多重剪贴板
# 使用 python.exe mcb.py save <keyword> # 保存 剪贴板 至关键字
# 使用 python.exe mcb.py <keyword> # 加载关键字 至剪贴板
# 使用 python.exe mcb.py list # 加载所有的关键字 至剪贴板
import shelve,pyperclip,sys
mcbShelf = shelve.open('mcb')
# TODO: save clipboard content.
# TODO: list keyword and load content
# 保存文本到关键字
if len(sys.argv) ==3 and sys.argv[1].lower() == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif len(sys.argv) == 2:
# 列出关键字和加载内容
if sys.argv[1].lower() == 'list':
pyperclip.copy(str(list(mcbShelf.keys())))
elif sys.argv[1] in mcbShelf:
pyperclip.copy(mcbShelf[sys.argv[1]])
mcbShelf.close()完成练习√
题目 扩展多种剪贴板
扩展本多重剪贴板程序,增加一个 delete 命令行参数,它将从 shelf 中删除一个关键字。然后添加一个 delete 命令行参数,它将删除所有关键字。
代码
#! python3
# 多重剪贴板
# 使用 python.exe mcb.py save <keyword> # 保存 剪贴板 至关键字
# 使用 python.exe mcb.py <keyword> # 加载关键字 至剪贴板
# 使用 python.exe mcb.py list # 加载所有的关键字 至剪贴板
# ...............mcb.py delete <keyword> # 删除关键字
# ...............mcb.py delete # 清空所有关键字
import shelve,pyperclip,sys
mcbShelf = shelve.open('mcb')
# 保存文本到关键字
if len(sys.argv) ==3 and sys.argv[1].lower() == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
# 删除关键字
elif len(sys.argv) == 3 and sys.argv[1].lower() == 'delete':
del mcbShelf[sys.argv[2]]
elif len(sys.argv) == 2:
#列出关键字
if sys.argv[1].lower() == 'list':
pyperclip.copy(str(list(mcbShelf.keys())))
#添加内容
elif sys.argv[1] in mcbShelf:
pyperclip.copy(mcbShelf[sys.argv[1]])
#清空所有关键字
elif sys.argv[1].lower() =='delete':
mcbShelf.clear()
mcbShelf.close()完成练习√√
















