1. 程式人生 > 實用技巧 >arr.sort的排序原理

arr.sort的排序原理

簡介:在Windows下的網易郵箱大師客戶端中,閱讀郵件時,可以使用快捷鍵Delete刪除郵件,然後自動跳到下一封,如果再按一次Delete鍵,再跳到下一封。為了迅速的閱讀郵件,同時刪除沒有必要的郵件,特地寫了如下指令碼,自用同時放出來共享。

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:961562169

問題:

1. 如上圖,我積累太多未讀郵件,原因是每天郵件太多,根本看不完,數量馬上到上限了;

2. 我想看到每封郵件;

3. 郵件有時內容太過雞肋,屬於知曉型即可,看完即可刪除;

4. 大多數看完就要刪除,一個個刪除太麻煩;

一句話,需要自動刪除我看完之後覺得沒有用處的郵件。

一個解決方案:

見如下程式碼

import win32api
import time


def fast_email_reading_and_delete(vk_code: int) -> None:
    """
    Virtual Key Code reference: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
    """
    print("Running, please switch to the software you are using within 3 seconds!")
    time.sleep(3) # use this 3 seconds to switch to the software you use, for example Netease email client
    count = 0
    while True:
        win32api.keybd_event(int(vk_code), 0, 0, 0)
        
        count += 1
        if count % 30 == 0: # refresh every 30 seconds to get more email from Netease email server
            win32api.keybd_event(int(0x71), 0, 0, 0)   # 0x71 is F2 refresh, int is 113
        time.sleep(1) # mail reading time
        
        # press space key or right arrow would halt the delete process. 0x20 spacekey 0x27 right arrow key
        if win32api.GetAsyncKeyState(int(0x20)) or win32api.GetAsyncKeyState(int(0x27)): 
            while True:
                time.sleep(0.5)
                if win32api.GetAsyncKeyState(int(0x20)) or win32api.GetAsyncKeyState(int(0x27)):
                    break

if __name__ == '__main__':
    fast_email_reading_and_delete(0x2E) # 0x2E is DEL key, equivalent int is 46

將來我如果有機會自行開發郵件客戶端,就將自動展現郵件內容(一封接著另一封)、自動刪除(或者歸檔)郵件,作為原始功能提供給使用者。

理論上講,上述指令碼適用於任何有DEL快捷鍵功能的軟體,注意不要把自己的東西搞砸了,自動刪除時間是1秒。

好了,以上程式碼呼叫了Windows的api,所以只能在Windows下執行,Linux下面應該有類似的工具,歡迎留言交流!