十行代码写个摸鱼神器,帮你自动化操作Excel
为啥要做这个?
现在很多公司会监控员工行为,包括上厕所的时长,不在座位的时长,发呆的时长,都在电脑上用了什么软件,发了多少邮件,打开了什么网站等等。
监控方式,包括软件,行为监控网关,人力,摄像头监控等等。目的就是防止员工摸鱼,在离职/辞退/裁员的时候,如果员工申请仲裁或者诉讼要求支付剩余工资或者要求赔偿,这个时候用人单位就可以拿出这些「证据」,拒绝支付工资或赔偿。
所以,最好能在自己发呆和上厕所的时候,有个机器人程序帮自己操作电脑,假装还在忙碌,忙着做报表。
代码基于Python,行数很少,不重复代码十行左右
#!/usr/bin/env python3
# encoding: utf-8
import pyautogui
import os
import time
import random
pyautogui.FAILSAFE = True # 防失控机制,鼠标失控时,人工将鼠标移动到屏幕左上角,强制结束程序
pyautogui.PAUSE = 0.25 # 为每个操作增加延迟
# 打开EXCEL表,准备改成让用户输入路径的
os.popen(r'D:\loaf\费用报表.xlsx')
time.sleep(10)
# 1.简单移动鼠标, 可以考虑加随机数
def move_mouse():
pyautogui.moveTo(100,100)
time.sleep(2)
pyautogui.moveTo(300,300)
# 2.鼠标简单点击,可以考虑加随机数
def left_click():
pyautogui.click(500,500)
# 3.滚动鼠标滚轮
def mouse_scroll():
pyautogui.scroll(-300)
time.sleep(2)
pyautogui.scroll(300)
# 4.全选快捷键
def select_all():
pyautogui.hotkey('ctrl', 'a')
# 5.输入公式
def input_func():
pyautogui.press('shift')
pyautogui.typewrite('=SUM(A2:A6)', interval=0.25)
time.sleep(3)
pyautogui.press('esc',presses=2)
# 6.查找对象
def find_object():
pyautogui.hotkey('ctrl', 'g')
time.sleep(1.5)
pyautogui.hotkey('alt', 's')
time.sleep(1.5)
pyautogui.press('b')
time.sleep(1.5)
pyautogui.press('enter')
time.sleep(3)
pyautogui.press('esc',presses=2)
# 7.随机切换sheet
def switch_sheet():
pyautogui.hotkey('ctrl', random.choice(['pageup', 'pagedown']))
# 随机选择一个操作
while True:
action_choice = ['move_mouse', 'left_click', 'mouse_scroll', 'select_all',
'input_func', 'find_object', 'switch_sheet']
eval("".join([random.choice(action_choice), "()"]))
time.sleep(1)
主要用到了Pyautogui这个库,用来操作键盘鼠标。OS库用来打开Excel表,time库用来设置延迟,适当的延迟才能表现的像人类的操作,过快了机械感觉太重,不像人操作的。
最下面随机选择操作的While True循环这段代码是我优化过的。原代码是这样的:
# 随机选择一个操作
while True:
action_choice = random.randint(1, 7)
if action_choice == 1:
move_mouse()
if action_choice == 2:
left_click()
if action_choice == 3:
mouse_scroll()
if action_choice == 4:
select_all()
if action_choice == 5:
input_func()
if action_choice == 6:
find_object()
if action_choice == 7:
switch_sheet()
time.sleep(1)
原代码if语句较多,显得冗长,但可读性较强。这种if语句较多的情况,可以用列表或者字典来代替,能减少代码行数。至于可读性,仁者见仁,智者见智了。
另外,eval这个是把字符串变成可执行代码,有点虚拟世界元宇宙的意思。
相关的视频:
开脑洞系列-十行代码写个摸鱼神器在你发呆的时候自动操作Excel