概述
电脑的剪切板,只能复制一样内容,然后粘贴,然后再去复制其他内容,再粘贴
如果只是复制少量有限次的内容,在 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 <关键词(可选)>?
清空复制的所有内容
删除指定内容
总结
- 数据和脚本程序分开储存,更加有利于脚本的维护
- shelve 模块,shelve的对象,可以用字典的方法,例子中关键词就是字典的 "键",保存的内容就是“值”
- 相对更安全
- 代码应该可以用“类”重新组织一下,有空在弄
这个脚本日常生活中挺实用的~