用按键精灵录了下键盘和鼠标的操作,录制的内容如下:
KeyDown "S", 1
Delay 20
Delay 33
KeyDown "E", 1
Delay 17
KeyDown "S", 1
Delay 26
Delay 14
KeyDown "S", 1
Delay 12
KeyUp "E", 1
Delay 46
KeyDown "S", 1
Delay 21
Delay 33
KeyDown "1", 1
Delay 15
KeyDown "S", 1
我想要把它转为大漠的命令。
如果利用txt或者word一个个地替换,对于每次都不相同的数字,显然行不通。
于是就想到了正则表达式。
尝试了一下,果然可以。
转换后的结果是这样的:
time.sleep(1128)
dm.LeftDoubleClick()
time.sleep(61)
dm.MoveTo(1334, 550)
time.sleep(1971)
dm.KeyDownChar("S")
time.sleep(66)
dm.KeyDownChar("Tab")
time.sleep(73)
dm.KeyUpChar("Tab")
time.sleep(304)
dm.KeyDownChar("3")
time.sleep(56)
dm.KeyUpChar("3")
time.sleep(17)
dm.KeyDownChar("S")
time.sleep(25)
time.sleep(29)
dm.KeyDownChar("S")
time.sleep(30)
主要是给函数加上括号,以方便在python运行。
还有就是替换一下函数的名称。
代码如下:
import re
text = r'C:\Users\caogu\Desktop\挂机录屏.txt'
text2 = r'C:\Users\caogu\Desktop\挂机录屏2.txt'
# 读取文件
with open(text, "r", encoding="GBK") as file:
content = file.read()
print(content)
# 替换文本中的数字,坐标加括号
content = re.sub(r'(\d+), (\d+)', r'(\1, \2)', content)
# 修改Delay 9065
content = re.sub(r'Delay (\d+)', r'time.sleep(\1)', content)
# 替换鼠标命令
content = re.sub('MoveTo ', 'dm.MoveTo', content)
content = re.sub('LeftUp 1', 'dm.LeftUp()', content)
content = re.sub('LeftDown 1', 'dm.LeftDown()', content)
content = re.sub('LeftDoubleClick 1', 'dm.LeftDoubleClick()', content)
content = re.sub('RightUp 1', 'dm.RightUp()', content)
content = re.sub('RightDown 1', 'dm.RightDown()', content)
content = re.sub('LeftClick 1', 'dm.LeftClick()', content)
content = re.sub('RightClick 1', 'dm.RightClick()', content)
# 替换键盘命令
# \w+表示匹配任意数量的英文字母
content = re.sub(r'KeyUp "(\w+)", 1', r'dm.KeyUpChar("\1")', content)
content = re.sub(r'KeyUp "(\d+)", 1', r'dm.KeyUpChar("\1")', content)
content = re.sub(r'KeyDown "(\w+)", 1', r'dm.KeyDownChar("\1")', content)
content = re.sub(r'KeyDown "(\d+)", 1', r'dm.KeyDownChar"("\1")', content)
# 写入文件
with open(text2, "w", encoding="utf-8") as file:
print(content)
file.write(content)