Python小项目 多重剪切板

2022-07-27 14:26:20

一、问题描述

假定你有一个无聊的任务,要填充一个网页或软件中的许多表格,其中包括一些文本字段。剪切板让你不必一次又一次输入同样的文本,但剪切板上一次只有一次内容,如果有几段不同的文本需要拷贝粘贴,就不得不一次又一次的标记和拷贝几个同样的内容。


二、问题分析

这时可以编写一个Python程序,追踪几段文本。这个多重剪切板被命名为mcb.pyw(mcb代表multiclipboard)。.pyw扩展意味着python运行该程序时,不会显示终端窗口。

该程序将利用一个关键字保存每段剪切板文本。例如,当运行py mcb.pyw save spam,剪切板中当前的内容就用关键字spam保存。通过运行py mcb.pyw spam,这段文本稍后会重新加载到剪切板中。如果忘记有哪些关键字时,可通过运行py mcb.pyw list,将所有关键字的列表复制到剪切板中。

下面程序要做的事情:

  1. 针对要检查的关键字,提供命令行参数。
  2. 如果参数是save,则将剪切板内容保存到关键字。
  3. 如果参数是list,则将所有关键字拷贝到剪切板。
  4. 否则,将关键字对应的文本拷贝到剪切板。

这意味着代码需要完成的工作为:

  1. 从sys.argv读取命令行参数。
  2. 读写剪切板。
  3. 保存并加载shelf文件。

如果使用的是windows,可以创建一个mcb.bat的批处理文件,很容易地通过”Run…”窗口运行这个脚本,该批处理文件包括:@pyw.exe E:\python1\mcb.pyw%*


三、解决问题

第一步:注释和shelf设置

从一个脚本框架开始,其中包含一些注释和基本设置。代码如下:

import shelve,pyperclip,sys
mcbShelf = shelve.open('mcb')
#TODO: Save clipboard content.
#TODO: List keywords and load content.
mcbShelf.close()

拷贝和粘贴需要pyperclip模块,读取命令行参数需要sys模块,同时准备好shelve模块。当用户希望保存一段剪切板文本时,需要将它保存到一个shelf文件中。当用户希望将文本拷贝回剪切板时,需要打开shelf文件,重新加载到程序中。

第二步:用一个关键字保存剪切板内容

根据用户希望保存文本到一个关键字,或加载文本到剪切板,或列出已有的关键字,该程序做的事情不一样。例子如下:

import shelve,pyperclip,sys
mcbShelf = shelve.open('mcb')
#TODO: Save clipboard content.
if len(sys.argv) == 3 and sys.argv[1].lower() =='save':
    mcbShelf[sys.argv[2]] = pyperclip.paste()
elif len(sys.argv) == 2:
    #TODO: List keywords and load content.
mcbShelf.close()

如果第一个命令行参数(它总是在sys.argv列表的下标1处)是字符串’save’,第二个命令行参数就是保存剪切板当前内容的关键字。关键字将用作mcbShelf中的键,值就是当前剪切板的文本。

如果只有一个命令行参数,就假定它要么是’list’,要么是需要加载到剪切板的关键字。

第三步:列出关键字和加载关键字的内容

用户希望从关键字中加载剪切板文本,或希望列出所有可用的关键字。代码如下:

import shelve,pyperclip,sys
mcbShelf = shelve.open('mcb')
#TODO: Save clipboard content.
if len(sys.argv) == 3 and sys.argv[1].lower() =='save':
    mcbShelf[sys.argv[2]] = pyperclip.paste()
elif len(sys.argv) == 2:
#TODO: List keywords and load content.
    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()
  • 作者:夏目_风鸣
  • 原文链接:https://blog.csdn.net/qq_34369217/article/details/119491810
    更新时间:2022-07-27 14:26:20