zoukankan      html  css  js  c++  java
  • Pythonpywinauto操作文件夹

    这里仅仅是以操作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()
  • 相关阅读:
    Python Requests-学习笔记(7)-Cookies
    Python Requests-学习笔记(6)-响应头
    Python Requests-学习笔记(5)-响应状态码
    Python Requests-学习笔记(4)-定制请求头和POST
    Python Requests-学习笔记(3)-处理json
    Python Requests-学习笔记(2)
    Python Request-学习笔记(1)
    编程就编程,我不参与政治
    非常漂亮的HTML5音乐播放器
    Dropzone.js实现文件拖拽上传
  • 原文地址:https://www.cnblogs.com/yarightok/p/15814624.html
Copyright © 2011-2022 走看看