>
>
>
>
起因
最近需要在公司用FTP下载一个不到10G的文件,下载速度也就100多KB。但电脑被设置了5分钟后自动休眠。休眠后,FTP就会暂停下载,虽然FTP可以设置断点续传,但我也不能守着电脑几十个小时。
> > > >方法1--物理外挂
具体实现如下图,实现原理为:让电机和鼠标绑在一起,当电机转动时会导致鼠标震动,让电脑认为一直有人在操作鼠标。嘎嘎。
缺点就是这东西转起来太吵,我怕别人给我扔垃圾桶里。
方法2---软件外挂
用python模拟鼠标操作,间隔一定时间模拟操作一次鼠标,防止系统休眠。
代码如下:
1import time 2import re,os 3from pymouse import PyMouse 4 5m = PyMouse() 6 7initText=['delay=10\n','pix=10\n','maxDelay=1000\n','click=1'] 8def work(): 9 if not os.path.exists('keepWorking.txt'):10 fo = open('keepWorking.txt','w')11 fo.writelines(initText)12 fo.close()13 print('请根据需要修改《keepWorking.txt》配置文件')14 fi = open('keepWorking.txt','r')15 lines = fi.readlines()16 fi.close()17 delay = 1018 pix = 1019 maxDelay = 100020 click=121 for line in lines:22 tmpRE = re.match('(\w+)=(\d+)',line)23 if tmpRE:24 if tmpRE.group(1) == 'delay':25 delay = int(tmpRE.group(2))26 if tmpRE.group(1) == 'pix':27 pix = int(tmpRE.group(2))28 if tmpRE.group(1) == 'maxDelay':29 maxDelay = int(tmpRE.group(2))30 if tmpRE.group(1) == 'click':31 click = int(tmpRE.group(2))3233 print('每次延迟 %d 秒' % delay)34 print('每次移动 %d 像素' % pix)35 print('将保持 %d 秒电脑不休眠' % maxDelay)36 if click :37 print('每次移动鼠标后,进行鼠标左键点击')38 else:39 print('每次移动鼠标后,不进行鼠标左键点击')4041 for i in range(int(maxDelay/delay)):42 time.sleep(delay)43 if i%2 == 0:44 (x_init,y_init) = m.position()45 m.move(x_init+pix,y_init)46 if click:47 m.click(x_init+pix,y_init)48 if i%2 == 1:49 (x_init,y_init) = m.position()50 m.move(x_init-pix,y_init)51 if click:52 m.click(x_init-pix,y_init)53 #print(m.position())54 print('%d 秒保持电脑不休眠结束,谢谢使用!' % maxDelay)55 exit()56575859if __name__ == '__main__':60 work()
代码的思路是:
第一次运行程序时,会产生一个keepWorking.txt 文件,可以修改这个文件中的变量。如果检测到已经存在这个文件,则读取文件中的配置。
等待delay 秒后,让鼠标水平跳动pix 个像素,再等待delay 秒后,再跳回去。
到达maxDelay 秒时,程序退出,不再模拟操作鼠标。
click =1 表示鼠标移动后,是否模拟左击操作。设置为0可能起不到防止休眠的作用。
最后使用的是第二种方法,确实电脑一天一夜没有息屏,但FTP下载了一半不知道什么原因断了,没再重连。OMG~~
> > > >分享
我把这个脚本打包成exe文件,方便某些小伙伴使用。
在公众号中发送: 每日一帖
即可获取本脚本和打包后的exe程序。