天域至尊 发表于 2020-3-24 10:19

你的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:}


原创,引用或转载请标明出处


天域至尊 发表于 2020-3-24 11:45

1830521742 发表于 2020-3-24 10:53
python 的OS 模块和Python-docx模块不香嘛?效率比 pyautogui高,还是后台运行的,不影响你操作鼠 ...

嘿嘿,就是docx模块不识别wps编辑的文档,我才这么痛苦,os库没找到调用word另存为的方法

落葉丶繁華殤 发表于 2020-3-24 10:23

这个方法不高明,但是解决问题了,高手,高手,高高手

家有葫芦仔 发表于 2020-3-24 10:35

我最好奇的是,为啥和老大说话要结巴呢?

nyzx0322 发表于 2020-3-24 10:47

会Py就是好

cosers 发表于 2020-3-24 10:49

这个小秘可以有阿,解决大问题了
谢谢分享

1830521742 发表于 2020-3-24 10:53

python 的OS 模块和Python-docx模块不香嘛?效率比 pyautogui高,还是后台运行的,不影响你操作鼠标键盘。

思念曹操 发表于 2020-3-24 10:54

能解决问题就可以,赞

Sen 发表于 2020-3-24 10:54

咳咳,小伙子, 下次还找你干苦力。

zcxter 发表于 2020-3-24 11:01

好像可以用万彩办公,全部批量转换成pdf,再批量转换成office,这样就可以了

羊肉串 发表于 2020-3-24 11:03

我都是用按键精灵的录制鼠标键盘功能,循环30次自动停止,一样可以实现。
页: [1] 2 3 4
查看完整版本: 你的py小秘书--python自动操作鼠标