日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python真神奇,带你体验另类的“全自动编程”

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python真神奇,带你体验另类的“全自动编程” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近年來“自動編程”、“智能編程”方面的項目層出不窮,例如AutoML、kite,以及最近風靡一時的python_autocomplete,這些項目有一個共同點,就是基于機器學習模型,致力于提升代碼補全和自動生成水平。

不過今天要展示的自動編程與上述概念不同,這次我們不講學術、不論實用,抱著娛樂的心態體驗一把另類的“全自動編程”模式。

01.項目介紹

今天要介紹的這個庫的名字叫pynput,與人工智能無關,這是一個控制和監控計算機輸入設備的庫,這是他的GitHub地址(詳細見文末),從庫的簡介中可以看到,目前僅支持鼠標和鍵盤兩種基本的輸入設備。

接下來我們打開文檔,看看pynput究竟有哪些功能。從文檔目錄(下圖)來看,關于pynput的說明大體分為三個部分:分別是鼠標事件、鍵盤事件和平臺限制。

先來簡單說一下平臺限制,因為事關外部輸入設備,在不同的操作系統中肯定會有一些差異和功能限制,例如Linux下需要設置環境變量$ DISPLAY、MAC操作系統限制了對鍵盤的監控、Windows中進程間的虛擬事件傳遞可能受限等等。

總的來說,平臺限制并不影響基本的使用(特別是在Windows系統中),我們暫且放下不談。

接著我們重點聊一聊鼠標事件和鍵盤事件。先來說鼠標事件部分,pynput對鼠標事件的處理主要分為控制和監控兩大部分。
在鼠標控制部分,可以通過代碼模擬鼠標的移動、單擊、雙擊、滾輪等操作,下面這張圖就是文檔中的演示代碼,函數名稱和實際事件名基本一致,很容易理解。

在鼠標事件的監控部分,監控任務Listener實際上是一個threading.Thread對象,采用回調函數的方式實時監控鼠標行為(下圖是文檔中的演示代碼)。既然是threading.Thread對象,Listener當然也就有阻塞和非阻塞兩種模式,一般來說,如果想要監控物理鼠標的行為,使用阻塞模式比較合適,如果想要監控pynput的模擬鼠標操作,建議采用非阻塞模式。

再來看鍵盤事件部分,和鼠標事件類似,pynput對鍵盤事件的處理也是分為控制和監控兩大部分,函數結構和操作模式也跟鼠標事件基本相同,這里就不展示文檔中的演示代碼了。有一點需要注意的是,鍵盤操作中有一些特殊方法,比如“ctrl+”、‘“shift+”、“alt+”這類的組合鍵,還有F1~FN、backspace、delete、insert等特殊功能鍵,在pynput中都有專門的定義,在操作時可以直接使用。

02.功能演示

介紹完基本功能,我們就寫一段代碼試一試pynput的設備控制以及監控效果,由于上文中重點介紹了關于鼠標事件的處理,這里就以鍵盤事件處理為例進行演示。

我們設計這樣一個程序:

  • 主線程:隨機生成20個(準確地說是19個)小寫英文字母,并用pynput模擬鍵盤輸入,在第10個字母輸入后附加輸入一個退格鍵(backspace)。
  • 監控線程:對鍵盤的按鍵和松開兩種操作進行監控,同時在控制臺輸出相關信息,當遇到退格鍵(backspace)松開這一事件時,終止監控線程。

為了便于觀察,在每個隨機字符串輸入后加入一個0.5s的時間間隔,另外由于這里是要監控虛擬的鍵盤按鍵事件,因此監控線程使用非阻塞模式,代碼如下:

一起來看下這段代碼的動態執行情況,在下面這段動畫中字符(包括退格鍵)的輸入全部都是基于pynput自動實現的。

通過上面這個動畫可以看到,在程序運行的前半部分,輸入結果和監控結果是完全一致的,直到退格鍵(backspace)事件發生后,控制臺就不再輸出監控信息,這是因為監控線程已經被終止掉了,但是模擬鍵盤輸入仍然會繼續,直到指定數量的字符串全部輸入完畢為止。通過這個例子應該就能很好地理解pynput的監控線程了,有興趣的朋友不妨自己體會一下。

至于鼠標事件的控制、監控功能,因為和鍵盤事件十分類似,這里就不再重復演示了。另外,由于鼠標沒有鍵盤中那么多復雜的、各式各樣的功能鍵,從某種意義上說鼠標事件的處理要比鍵盤事件處理更簡單一些。

03.神奇的"自動編程"

最后,我們回到今天的主題,把鼠標事件和鍵盤事件的控制結合起來,實現一個“全自動編程”的功能。事實上這里實現的“自動編程”與人工智能無關,也不是傳統的代碼匹配補全,而是控制鼠標和鍵盤按照我們提前設置好的步驟自動運行。

為了方便,我們就用最簡單的“Hello World”來進行演示,在sublime中完成“Hello World”程序大概需要經過以下幾個步驟:新建一個sublime文件——命名、保存為py文件——在新建的py文件中輸入“print(‘Hello World’)”語句——再次保存——運行新的程序。

前文講到過,pynput可以模擬所有的鼠標和鍵盤操作,上面步驟中的操作自然也可以由pynput模擬完成,就跟手動操作一樣。我們把以上操作全部寫到腳本中,同時加入鼠標和鍵盤的監控線程,在腳本啟動后不僅會自動編寫運行“Hello World”程序,還會對鼠標和鍵盤的模擬操作進行實時監控,并將相關信息輸出到控制臺。

先來看結果,下面這個動畫就是我們寫的“自動編程”腳本的運行情況,整個過程全部自動執行,沒有任何手動干預。

在整個過程中,所有的鼠標和鍵盤事件都會被監控線程記錄,包括每一次鍵盤按鍵的點擊和釋放、鼠標的移動和點擊等。

下面我們來看看這個腳本的核心代碼,可以看到,我們使用pynput模擬了所有與鼠標和鍵盤有關的操作,使用這種方法還可以編寫更加復雜的程序,只需要改變keycontroller.type的輸入內容就可以。

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' keycontroller = keyboard.Controller() mousecontroller = mouse.Controller() # 新建文件 keycontroller.press(keyboard.Key.ctrl_l) keycontroller.press('n') keycontroller.release(keyboard.Key.ctrl_l) keycontroller.release('n') sleep(1) # 保存文件 keycontroller.press(keyboard.Key.ctrl_l) keycontroller.press('s') keycontroller.release(keyboard.Key.ctrl_l) keycontroller.release('s') sleep(1) # 輸入文件名稱 keycontroller.type('auto{}.py'.format(random.uniform(0,99))) sleep(1) # 點擊保存 mousecontroller.position = (0, 0) mousecontroller.move(466, 493) mousecontroller.press(mouse.Button.left) mousecontroller.release(mouse.Button.left) sleep(1) # 輸入代碼 keycontroller.type("print('Hello World')") keycontroller.press(keyboard.Key.space) sleep(1) # 重新保存 keycontroller.press(keyboard.Key.ctrl_l) keycontroller.press('s') keycontroller.release(keyboard.Key.ctrl_l) keycontroller.release('s') sleep(1) # 運行新程序 keycontroller.press(keyboard.Key.ctrl_l) keycontroller.press('b') keycontroller.release(keyboard.Key.ctrl_l) keycontroller.release('b')

友情提示:

正如本文開頭所說,使用pynput實現的所謂“自動編程”僅僅是一種娛樂,并沒有太多實用價值。但是pynput對于輸入設備的控制和監控在實踐中倒是有可能會用得上,至于如何發揮他的作用,就要看自己的想象力了。

總結

以上是生活随笔為你收集整理的Python真神奇,带你体验另类的“全自动编程”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲三级网 | 色在线视频 | jizzjizz国产 | 日本一区二区三区成人 | 人与拘一级a毛片 | 一区二区三区在线观 | www.狠狠操.com | 99成人精品视频 | 欧美熟妇另类久久久久久多毛 | 天堂а√在线最新版中文在线 | 久久成年 | 777777av | 国产精品夜夜爽 | 日本人妖在线 | 国产第一页屁屁影院 | 狠狠躁夜夜躁人人爽视频 | jizz内谢中国亚洲jizz | 色哟哟视频 | 国模人体一区二区 | 无码人妻丰满熟妇区五十路百度 | 久久一热 | 按摩毛片 | 国产成人av一区二区三区在线观看 | www日韩视频 | 国产日韩片 | 亚洲视频二区 | 亚洲视频一区在线 | 麻豆视频91 | 动漫一区二区 | 成年人看的视频网站 | 少妇偷人精品无码人妻 | 无码人妻精品一区二区三区99不卡 | 污导航在线 | 波多野结衣乳巨码无在线观看 | 成人免费观看视频网站 | 操操综合网 | 欧美在线播放视频 | 成人一区二区三区 | 久久影库 | 99福利网| 亚洲一区二区三 | 日韩免费视频一区二区 | 亚洲小视频在线观看 | 在线免费看黄色 | 女人的天堂av在线 | 成人做爰视频www | 69人妻一区二区三区 | 99在线播放视频 | 欧美成年人视频在线观看 | 国产69av| 99热r| 处破痛哭a√18成年片免费 | 亚洲欧美激情另类 | av视觉盛宴| 精品久久国产视频 | 爆乳熟妇一区二区三区霸乳 | 久久国产成人精品 | 尤物视频在线观看国产性感 | 波多野久久 | 色婷婷在线观看视频 | 偷拍精品一区二区三区 | 亚洲你懂的| 亚洲一区二区观看播放 | 求一个黄色网址 | 蜜桃av噜噜一区二区三区网址 | 污视频91| 国产91影院 | 国产精品污www一区二区三区 | 日本欧美在线视频 | 国产a久久麻豆入口 | 国产精品剧情 | 成人黄色一区二区三区 | 亚洲欧美日韩另类在线 | 免费观看的av网站 | 国产91在线观看丝袜 | 日本三级中国三级99人妇网站 | 日日躁狠狠躁 | 久久亚洲免费视频 | 黄色一级免费视频 | 色眯眯网 | 国产孕交 | 黑森林av凹凸导航 | 国产另类视频 | 成人区人妻精品一熟女 | 国产精品一区在线免费观看 | 久草小说 | 饥渴的少妇和男按摩师 | 日韩二区在线 | 最新国产露脸在线观看 | 国产白丝精品91爽爽久久 | 日xxxx| 亚洲产国偷v产偷v自拍涩爱 | 久久久久国产精品熟女影院 | 糖心logo在线观看 | 日韩av一区二区三区在线观看 | 无遮挡无掩盖网站 | 亚洲久久综合 | 日日夜夜2017| 黄色的网站在线 |