目标
使用python,将source文件夹中的pdf文件,先由福昕阅读器打开,然后另存到target文件夹,保存为html文件,便于网页阅读
代码
把文件夹中多个的文件依次打开
// 主函数
def main():
# pywinauto 模块主要用于应用控制(打开、关闭应用等)窗口控制(最大化、最小化窗口等),也可以等位到控件,并对控件进行操作,如点击、编辑等。
from pywinauto.application import Application
import os
from time import sleep
app = Application(backend="win32")
# 对于 pywinauto 模块,主要使用其中的 Application 类,需要导入包,并定义一个 Application 类的对象。
app_path = r"D:\Program Files (x86)\Foxit Software\Foxit PhantomPDF\FoxitPhantomPDF.exe"
file_dir = r"C:\Users\Administrator\Desktop\LightPapers\PDFfiles"
source_files = os.listdir(file_dir) #待处理文件
for file_name in source_files:
# 类似cmd,用应用打开指定文件
app.start(app_path + " " + file_dir + '\\' + file_name)
# 连接应用
app.connect(path=app_path)
# 进行点击:这里待实现一个自定义函数
operate_file()
# 关闭应用
app.kill()
print("完成转换!")
main()
点击操作及另存为
这部分可以单独放在一个文件,若是,则需要在main函数前导入operate_file模块
// An highlighted block
import pyautogui,time
def operate_file():
target_file = r"C:\Users\Administrator\Desktop\LightPapers\HTMLfiles"
#待处理的鼠标事件及位置,这里按顺序预存
minimize_window = ("最小化pycharm窗口", (1806,17)) #有时不需要
op_seq = [('文件', (41, 47)), ('另存为', (78, 267)), ('位置', (716, 289)), ('类型', (232, 501)), ('类型选择', (269, 581)),
('确定', (759, 559))]
modify_addr = ("地址框", (659,54)) #->使用了enter键
close_chrome = ("关闭chrome",(1892,10))
def move_click(op_xy):
op_name, (x, y) = op_xy
pyautogui.moveTo(x=x, y=y, duration=0.0, tween=pyautogui.linear)
# 移动鼠标:x, y 为绝对位置
time.sleep(1.5)
if op_name == "另存为":
pyautogui.doubleClick(x, y) # 另存为处需要双击
return
pyautogui.click(x, y) # 单击
for op_xy in op_seq:
if op_xy[0] == "类型": # 类型前选择位置
move_click(modify_addr)
pyautogui.press('backspace') # 按下按键
pyautogui.typewrite(message=target_file, interval=0.001) #打字,这里是逐个打入的字符
time.sleep(3.0)
pyautogui.press('enter')
move_click(op_xy)
time.sleep(30.0) #等待输出成功,关闭自动打开的chrome页面
move_click(close_chrome)
其中,鼠标操作序列是需要提前记录的,包括坐标.可通过如下函数获取记录坐标
def get_current_xy():
x, y = pyautogui.position()
print(x, y, sep=',')
依赖项
可通过下方的代码下载
def install_package():
"安装依赖的包,这里装了2个"
import os
mirror = " -i https://pypi.douban.com/simple"
os.system("python -m pip install --upgrade pip" + mirror) # 更新 pip
os.system("pip install pywinauto" + mirror) # 安装 pywinauto
os.system("pip install pyautogui" + mirror) # 安装 pyautogui
print("包安装成功! ")
install_package()
参考链接:
知乎问答channel.
PC端应用程序自动化运行(pywinauto、pywin32、pyautogui)
python库之autopy
还可参考