前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Python实现多重剪切板

利用Python实现多重剪切板

作者头像
披头
发布2020-11-20 10:25:04
1.6K0
发布2020-11-20 10:25:04
举报
文章被收录于专栏:datartisan

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

还好你学习了python,python最适合干这种活了。

复制和粘贴需要 pyperclip 模块, 读取命令行参数需要 sys 模块。将 Python 程序中的变量保存到二进制的 shelf 文件中会用到shelve 模块。shelve 模块让你在程序中添加“保存” 和“打开” 功能,方便程序下一次运行时加载变量。

该程序要做的事情如下:

  1. 识别命令行参数;
  2. 什么时候保存剪切板内容?
  3. 什么时候删除剪切板内容?
  4. 如何呈现剪切板内容?全部呈现还是按照关键字呈现?
  5. 如何清空剪切板?
  6. 清空剪切板后在粘贴,会看到什么内容?

假设你使用的windows环境,要运行该程序,你需要创建一个bat批处理程序,使用组合键win + R调出的运行窗口来运行该程序。bat批处理文件内容如下:

@pythonw.exe D:\python\ch00_book\mcb.pyw %* :: 运行时替换路径即可

将程序进行分解,可以有效帮助我们去编写程序,让我们来编写一个脚本框架,他看起来是这样的。

代码语言:javascript
复制
#! 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()

下面依次补充每个步骤的命令

保存剪切板内容,并为每次复制的内容设置一个关键字

代码语言:javascript
复制
if command == 'save':
    mcbShelf[sys.argv[2]] = pyperclip.paste()

列出所有关键字

代码语言:javascript
复制
elif command == 'list':
    pyperclip.copy(", ".join(mcbShelf.keys()))

删除某个关键字,并清除该关键字对应的内容

代码语言:javascript
复制
elif command == 'delete':
    del mcbShelf[sys.argv[2]]

删除所有关键字,清空剪切板

代码语言:javascript
复制
elif command == 'delete_all':
    # 清空 shelf 文件
    mcbShelf.clear()
    # mcbShelf = shelve.open('mcb', flag='n')
    # 清空剪切板
    pyperclip.copy('')

根据命令行参数,显示某关键字对应的内容

代码语言:javascript
复制
elif sys.argv[1] in mcbShelf:
    pyperclip.copy(mcbShelf[sys.argv[1]])
else:
    pyperclip.copy('Sorry, You have input a wrong keyword.')

完整程序

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 保存剪切板内容,并为每次复制的内容设置一个关键字
  • 列出所有关键字
  • 删除某个关键字,并清除该关键字对应的内容
  • 删除所有关键字,清空剪切板
  • 根据命令行参数,显示某关键字对应的内容
  • 完整程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档