你的py小秘书--python自动操作鼠标
昨天老大让我干个事。各地上报上来了将近特别多份word文档,奈何这些word文档有的是doc的,有的是docx的。有的是用wps编辑的,有的是office。
因为原有的一个程序,是不识别wps编辑的文档的,只能识别word的。
老大缓缓的走过来:你,今天没事吧。
我:大……大哥,我没事。
老大:干个体力活?
我:都……都行。
老大:把文档全部用office另存为一遍,OK?
我:O……OK
老大:下班前要。
我:行……行吧。
随后,搜起了word的命令行操作,没搜到……
百般无奈下,只能召唤小秘了,python!
思路是,一次打开30份文档,由python去模拟人工操作,一个个另存为关闭。而我每次则是打开30份就好了。
为什么是30份?因为更多电脑就卡死机了,别问我怎么知道的。
另存为一份文档,基本需要6-7次单击,所以定了6次单击,让鼠标依次憨憨的点屏幕上几个位置。
付源码:
import pyautogui,time
#pyautogui是孔控制鼠标的库
#pyautogui库功能非常丰富,可以单击,移动,拖动,右键等等
#初始化鼠标所需单击的位置,这次是模拟多地单击操作
mouseX=[]
mouseY=[]
#尝试读取鼠标位置保存文件,这个文件用于存储鼠标点击位置的数据,方便每次运行程序可以直接读取上次数据
#若文件不存在,则提示用户确定点击位置
try:
#尝试打开,读取鼠标位置数据
f=open('a.txt',mode='r')
f=str(f.read()).split(',')
for i in f:
ff=i.split(':')
mouseX.append(int(ff))
mouseY.append(int(ff))
except Exception:
pass
finally:
try:
f.close()
except Exception:
pass
#如果上述步骤没有读取成功,提醒用户把鼠标移动到想要程序自动点击的位置,回车。
#程序会自动记录位置,写入文件中,方便下次启动程序复用
#此次一共定位6个位置,依次单击,所以要用户定位6个位置
num=1
if len(mouseX)==0:
#因需要定位6个位置,所以循环6次
while num<=6:
input('请将鼠标移至%s号位置,回车'%(num))
#获取鼠标当前位置
X, Y = pyautogui.position()
#增加到列表中
mouseX.append(X)
mouseY.append(Y)
print('位置定位成功')
num=num+1
#尝试存储数据
try:
f=open('a.txt',mode='w')
masse=''
for i in range(0,len(mouseX)):
masse=masse+str(mouseX)+':'+str(mouseY)+','
f.write(masse)
print('数据保存成功')
except Exception:
print('数据保存失败,下次使用需要重新定位,本次无影响。')
finally:
try:
f.close()
except Exception:
pass
#提示用户位置登记成功,等待五秒
print('定位鼠标位置为:%s,%s'%(str(mouseX),str(mouseY)))
time.sleep(5)
#进入30次循环,每次循环间隔2秒。自己设定的30个为一批次,可以按照自己的意愿设定
n=1
while n<=30:
#打印提示信息
print(str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))+'开始'+str(n))
#依次模拟点击,每次间隔两秒
for i in range(0,len(mouseX)):
#在指定位置模拟左键单击
pyautogui.click(mouseX, mouseY, button='left')
time.sleep(2)
n=n+1
或许这不是什么高明的法子,但是很快。
期待评论区给出更高明的法子{:301_997:}
原创,引用或转载请标明出处
1830521742 发表于 2020-3-24 10:53
python 的OS 模块和Python-docx模块不香嘛?效率比 pyautogui高,还是后台运行的,不影响你操作鼠 ...
嘿嘿,就是docx模块不识别wps编辑的文档,我才这么痛苦,os库没找到调用word另存为的方法 这个方法不高明,但是解决问题了,高手,高手,高高手 我最好奇的是,为啥和老大说话要结巴呢? 会Py就是好 这个小秘可以有阿,解决大问题了
谢谢分享 python 的OS 模块和Python-docx模块不香嘛?效率比 pyautogui高,还是后台运行的,不影响你操作鼠标键盘。 能解决问题就可以,赞 咳咳,小伙子, 下次还找你干苦力。 好像可以用万彩办公,全部批量转换成pdf,再批量转换成office,这样就可以了 我都是用按键精灵的录制鼠标键盘功能,循环30次自动停止,一样可以实现。