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()

完成练习√√