美文网首页
剪切板只能用一次?我不服

剪切板只能用一次?我不服

作者: 求余的小屋 | 来源:发表于2019-07-10 23:28 被阅读0次

概述

电脑的剪切板,只能复制一样内容,然后粘贴,然后再去复制其他内容,再粘贴
如果只是复制少量有限次的内容,在 wps 和浏览器之间直用切换一两次,倒无所谓
但如果要从 Excel 表格中复制大量的内容,内容而且还要分门别类,复制到 新的Excel 表格中去... ...
(╯‵□′)╯︵┻━┻

所以,让python来帮我,一次记住所有复制的内容,用助记符分类,
然后通过用户输入的命令,把复制好的内容,按需要填入 Execel 表格中去

用到的模块

  • pyperclip 可以复制剪切板的内容为脚本所用,也可把变量值,复制到剪切板,供人类使用
  • shelve 将含有值的变量,保存脚本之外,会生成三个文件【<.mcb>, <.dir>,< .bak>】
  • sys 用于获取用户输入的选项(options)
  • os 配合.bat文件使用

实例

如图,有学号,名字,电话... ...
你的任务就是,从中复制回家人员的信息,放置到新的 Excel 表格中去


表格

代码

#-*- coding:utf-8 -*-
#!python3 
#mcb.py - 把剪切板的内容,临时存储到二进制文件里这里,供随时调用
#Usage: py.exe mcb.pyw save <keyword> - 保存剪切板的内容,用关键词标记
#       py.exe mcb.pyw <keyword> - 根据关键词,把对应内容复制到剪切板
#       py.exe mcb.pyw list - 列出所有内容的关键词,到剪切板 

import sys, os
import pyperclip
import shelve

os.chdir(r"D:py\Auto\mcb")
mcbShelf = shelve.open(r'.\mcb')

#保存剪切板的内容,用助记符标记
if len(sys.argv) == 3 and sys.argv[1].lower() == 'save':
    mcbShelf[sys.argv[2]] = pyperclip.paste()
    print("[*] " + sys.argv[2] + "已保存")
#清空指定内容
elif len(sys.argv) == 3 and sys.argv[1].lower() == 'delete':
    del mcbShelf[sys.argv[2]]
    print("[!] " + sys.argv[2] + "已删除")


elif len(sys.argv) == 2:
      #列出关键词和加载内容
    if sys.argv[1].lower() == 'list':
        pyperclip.copy(str(list(mcbShelf.keys())))
        print("[*] 关键词已复制到剪切板!")
     #清空所有内容
    elif sys.argv[1].lower() == "delete":
        mcbShelf.clear()
        print("[!] 已清空")
    #根据关键词,把内容复制到剪切板以供粘贴使用
    elif sys.argv[1] in mcbShelf:
        pyperclip.copy(mcbShelf[sys.argv[1]])
        print("[*] " + sys.argv[1] + " 内容已加载到剪切板")

else:
    print("[!] 参数错误!")
mcbShelf.close()

<mcb.bat> 文件

@python3.exe D:\py\Auto\mcb\mcb.py %*
@pause

使用方法

  • mcb save <关键词(暂不支持中文)>
    我先复制了一行信息,win + R 输入指令
    按照名字,依次保存复制的内容

    保存复制到剪切板的内容
提示已保存
一次标记一个复制内容,然后复制下个人的信息
再次 win + R 用新的关键词标记......
  • mcb list
    看看我们标记了几个内容

    查看所有关键词
    提示已复制到剪切板,复制到运行窗口即可
    然后,选择要复制到新表格的内容
  • mcb <关键词(暂不支持中文)>

    复制关键词内容到剪切板
提示对应内容已经复制,可粘贴使用
  • mcb delete <关键词(可选)>?
    清空复制的所有内容
    mcb delete
提示已经清空所有内容

删除指定内容

输入一个关键词删除对应内容 指定内容已删除

总结

  • 数据和脚本程序分开储存,更加有利于脚本的维护
  • shelve 模块,shelve的对象,可以用字典的方法,例子中关键词就是字典的 "键",保存的内容就是“值”
  • 相对更安全
  • 代码应该可以用“类”重新组织一下,有空在弄

这个脚本日常生活中挺实用的~

相关文章

网友评论

      本文标题:剪切板只能用一次?我不服

      本文链接:https://www.haomeiwen.com/subject/glakkctx.html