python使用程序打开、另存为:一个自动化实例

目标

使用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
还可参考

    原文作者:天蓝蓝的本我
    原文地址: https://blog.csdn.net/weixin_42433809/article/details/118730449
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞