Python--pywinauto操作文件夹

这里仅仅是以操作windows下的文件夹来演示pywinauto的几个api,实际操作文件夹和文件是可以用其他库的哦

 

import time

import json

from pywinauto import Application, keyboard
import pyautogui
from subprocess import Popen
import os


def test_explorer():
    exe_path = r'C:\Windows\explorer.exe'
    app = Application(backend='uia')
    # app = app.start(exe_path)

    # p = Popen(exe_path)  # 这种方式不可行,app.windows()都找不到窗口
    # app = app.connect(process=p.pid)

    # os.system(exe_path)  # 启动程序,直接打开explorer.exe效果没有双击图标好,有时候切换目录失败,有时候全选删除文件失败
    os.system(fr"{exe_path} d:\baidu")  # 未了防止以上问题,这里打开一个指定的目录

    # 通过程序图标的图片在屏幕中找到图标
    # 然后双击图标启动程序
    # box = pyautogui.locateOnScreen(r'd:\baidu.png')
    # x, y = pyautogui.center(box)
    # pyautogui.doubleClick(x, y)

    # 连接到程序
    app = app.connect(path=exe_path)

    app['baidu'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}')  # 切换目录
    # app['文件资源管理器'].window(title_re='地址:').type_keys('{ENTER}' r'd:\temp' '{ENTER}')  # 切换目录
    temp = app['temp']  # 获取到切换的目录的窗口
    # keyboard.send_keys('^a')  # 删除当前目录中的文件
    # time.sleep(1)
    # keyboard.send_keys('{DELETE}')
    temp.type_keys('^a').type_keys('{VK_DELETE}')
    time.sleep(5)  # 等待删除完毕

    def make_dirs(n):
        for i in range(1, n+1):
            temp['新建文件夹'].click()  # Button类型可直接click
            time.sleep(0.5)  # 停顿一下,防止下面输入名称时少输入字符
            # 修改目录的名称
            keyboard.send_keys(f'这是一个自动创建的目录{i}'
                               '{ENTER}'
                               )
            # os.mkdir(fr'd:\temp\这是一个自动创建的目录{i}')
    make_dirs(10)
    # 获取当期目录的文件列表
    files = temp.child_window(title="项目视图", control_type="List").children(control_type='ListItem')
    rows = []
    for file in files:
        columns = file.children()
        row = {}
        for column in columns:
            properties = column.legacy_properties()  # 获取属性信息
            row[properties['Name']] = properties['Value']
        rows.append(row)
    print(json.dumps(rows, ensure_ascii=False))

    # 点击删除按钮
    # temp.window(title="组织", control_type="ToolBar").button('删除').type_keys('{ENTER}')  # 没有click方法,借助回车实现点击功能
    # 打印出当前窗口的控件树
    # print(app['temp'].dump_tree())


def main():
    test_explorer()


if __name__ == '__main__':
    main()

 

posted @ 2022-01-17 18:12  liDB  阅读(1272)  评论(0编辑  收藏  举报