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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python控制台动画_Python真神奇,带你体验另类的“全自动编程”

發(fā)布時(shí)間:2023/12/20 python 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python控制台动画_Python真神奇,带你体验另类的“全自动编程” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

近年來“自動(dòng)編程”、“智能編程”方面的項(xiàng)目層出不窮,例如AutoML、kite,以及最近風(fēng)靡一時(shí)的python_autocomplete,這些項(xiàng)目有一個(gè)共同點(diǎn),就是基于機(jī)器學(xué)習(xí)模型,致力于提升代碼補(bǔ)全和自動(dòng)生成水平。

不過今天要展示的自動(dòng)編程與上述概念不同,這次我們不講學(xué)術(shù)、不論實(shí)用,抱著娛樂的心態(tài)體驗(yàn)一把另類的“全自動(dòng)編程”模式。

01.項(xiàng)目介紹

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


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

先來簡單說一下平臺(tái)限制,因?yàn)槭玛P(guān)外部輸入設(shè)備,在不同的操作系統(tǒng)中肯定會(huì)有一些差異和功能限制,例如Linux下需要設(shè)置環(huán)境變量$ DISPLAY、MAC操作系統(tǒng)限制了對(duì)鍵盤的監(jiān)控、Windows中進(jìn)程間的虛擬事件傳遞可能受限等等。

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


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


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


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

02.功能演示

介紹完基本功能,我們就寫一段代碼試一試pynput的設(shè)備控制以及監(jiān)控效果,由于上文中重點(diǎn)介紹了關(guān)于鼠標(biāo)事件的處理,這里就以鍵盤事件處理為例進(jìn)行演示。

我們?cè)O(shè)計(jì)這樣一個(gè)程序:

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

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


一起來看下這段代碼的動(dòng)態(tài)執(zhí)行情況,在下面這段動(dòng)畫中字符(包括退格鍵)的輸入全部都是基于pynput自動(dòng)實(shí)現(xiàn)的。


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

至于鼠標(biāo)事件的控制、監(jiān)控功能,因?yàn)楹玩I盤事件十分類似,這里就不再重復(fù)演示了。另外,由于鼠標(biāo)沒有鍵盤中那么多復(fù)雜的、各式各樣的功能鍵,從某種意義上說鼠標(biāo)事件的處理要比鍵盤事件處理更簡單一些。

03.神奇的"自動(dòng)編程"

最后,我們回到今天的主題,把鼠標(biāo)事件和鍵盤事件的控制結(jié)合起來,實(shí)現(xiàn)一個(gè)“全自動(dòng)編程”的功能。事實(shí)上這里實(shí)現(xiàn)的“自動(dòng)編程”與人工智能無關(guān),也不是傳統(tǒng)的代碼匹配補(bǔ)全,而是控制鼠標(biāo)和鍵盤按照我們提前設(shè)置好的步驟自動(dòng)運(yùn)行。

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

前文講到過,pynput可以模擬所有的鼠標(biāo)和鍵盤操作,上面步驟中的操作自然也可以由pynput模擬完成,就跟手動(dòng)操作一樣。我們把以上操作全部寫到腳本中,同時(shí)加入鼠標(biāo)和鍵盤的監(jiān)控線程,在腳本啟動(dòng)后不僅會(huì)自動(dòng)編寫運(yùn)行“Hello World”程序,還會(huì)對(duì)鼠標(biāo)和鍵盤的模擬操作進(jìn)行實(shí)時(shí)監(jiān)控,并將相關(guān)信息輸出到控制臺(tái)。

先來看結(jié)果,下面這個(gè)動(dòng)畫就是我們寫的“自動(dòng)編程”腳本的運(yùn)行情況,整個(gè)過程全部自動(dòng)執(zhí)行,沒有任何手動(dòng)干預(yù)。


在整個(gè)過程中,所有的鼠標(biāo)和鍵盤事件都會(huì)被監(jiān)控線程記錄,包括每一次鍵盤按鍵的點(diǎn)擊和釋放、鼠標(biāo)的移動(dòng)和點(diǎn)擊等。

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

友情提示:
正如本文開頭所說,使用pynput實(shí)現(xiàn)的所謂“自動(dòng)編程”僅僅是一種娛樂,并沒有太多實(shí)用價(jià)值。但是pynput對(duì)于輸入設(shè)備的控制和監(jiān)控在實(shí)踐中倒是有可能會(huì)用得上,至于如何發(fā)揮他的作用,就要看自己的想象力了。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。