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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM