摘要:今天的騷操作,分享的是一個(gè)自動(dòng)拷貝電腦盤(pán)內(nèi)容的程序。當(dāng)別人的盤(pán)插入到你的電腦上時(shí),腳本會(huì)自動(dòng)把盤(pán)所有的內(nèi)容,全部拷貝到你的電腦上。騷源碼程序主要是由三個(gè)函數(shù)組成,。每個(gè)操作都會(huì)記錄到日志中,以便日后查看相應(yīng)的拷貝信息。
閱讀文本大概需要 6 分鐘。
Python 這門(mén)語(yǔ)言有非常多有趣的內(nèi)容,比如給微信好友自動(dòng)發(fā)消息、查看微信好友撤回的消息、通過(guò)微信控制電腦等等。在我公眾號(hào)上也分享過(guò)很多有趣的程序,近期我會(huì)去搜集一些騷操作的 Python 程序分享給大家,并命名「Python 騷操作」專(zhuān)欄,持續(xù)更新!文中一些程序可能來(lái)自別人的文章,但如果我覺(jué)得程序還有所改進(jìn)的地方,我會(huì)繼續(xù)添加一些代碼,并且我會(huì)在文末標(biāo)注原程序出處。
今天的「Python 騷操作」,分享的是一個(gè)自動(dòng)拷貝電腦 U 盤(pán)內(nèi)容的程序。當(dāng)別人的 U 盤(pán)插入到你的電腦上時(shí),Python 腳本會(huì)自動(dòng)把 U 盤(pán)所有的內(nèi)容,全部拷貝到你的電腦上。腳本每隔 5 秒掃描當(dāng)前電腦是否有 U 盤(pán)插入,如果是已拷貝過(guò)的內(nèi)容,則不會(huì)重復(fù)拷貝,每個(gè)相應(yīng)的操作都會(huì)記錄到日志文件中。
如果恰好這個(gè) U 盤(pán)里有某些室友的「學(xué)習(xí)視頻」,比如下的圖片。
那騷氣指數(shù) 10 顆星!
注意此程序只是用來(lái)學(xué)習(xí)交流,切勿違法使用。
Python 騷思路
在 windows 系統(tǒng)中,當(dāng)有 U 盤(pán)插入到你的電腦上時(shí),會(huì)給它分配一個(gè)磁盤(pán)名稱(chēng),比如在我的電腦上分配的是「J」。所以我會(huì)先定義一個(gè)「USB_FILE」變量,表示 U 盤(pán)所在的目錄。
我們利用 os 庫(kù)來(lái)判斷當(dāng)前系統(tǒng)是否有「USB_FILE」,如果掃描到當(dāng)前系統(tǒng)有這個(gè)目錄,說(shuō)明有 U 盤(pán)插入到當(dāng)前電腦上。隨后我們通過(guò) shutil 庫(kù),把 U 盤(pán)里的內(nèi)容全部拷貝到自己的電腦上。在每個(gè)操作之間我添加了 input_log() 方法,用來(lái)把當(dāng)前相應(yīng)的操作記錄到日志文件中。?
Python 騷源碼
程序主要是由三個(gè)函數(shù)組成,get_dirs_size()、main()、input_log()。
get_dirs_size()
get_dirs_size() 主要是返回要拷貝 U 盤(pán)的長(zhǎng)度,用來(lái)判斷當(dāng)前要拷貝的內(nèi)容是否已經(jīng)重復(fù),如果重復(fù)則無(wú)需重新拷貝。
def?get_dirs_size(dir): ????size?=?0 ????for?root,?dirs,?files?in?os.walk(dir): ????????size?+=?sum([getsize(join(root,?name))?for?name?in?files]) ????print(size) ????return?size
main()
main() 用來(lái)執(zhí)行主邏輯代碼,即每隔 5 秒檢查當(dāng)前電腦是否有 U 盤(pán)插入。如果檢查到,則記錄當(dāng)前 U 盤(pán)的長(zhǎng)度。在下一次檢測(cè)的時(shí)候,如果當(dāng)前的長(zhǎng)度沒(méi)有發(fā)生變化,則無(wú)需重新拷貝。每個(gè)操作都會(huì)記錄到日志中,以便日后查看相應(yīng)的拷貝信息。
def?main(): ????old_size?=?0 ????new_dirsize?=?0 ????while(1): ????????if?os.path.exists(USB_PATH): ????????????print("檢測(cè)到?U?盤(pán)") ????????????input_log("檢測(cè)到?U?盤(pán)") ????????????new_dirsize?=?get_dirs_size(USB_PATH) ????????????if?old_size?!=?new_dirsize: ????????????????for?filename?in?os.listdir(USB_PATH): ????????????????????print("拷貝了:"?+?filename) ????????????????????input_log("拷貝了:"?+?filename) ????????????????shutil.copytree(USB_PATH,?SAVE_PATH) ????????????????old_size?=?new_dirsize ????????????else: ????????????????print("U?盤(pán)沒(méi)有變化") ????????????????input_log("U?盤(pán)沒(méi)有變化") ????????else: ????????????print("暫時(shí)沒(méi)有?U?判斷") ????????print("開(kāi)始休眠") ????????input_log("開(kāi)始休眠") ????????sleep(5) ????????print("休眠結(jié)束,重新檢測(cè)") ????????input_log("休眠結(jié)束,重新檢測(cè)")
input_log() 利用 logging 庫(kù),來(lái)把相應(yīng)的操作信息保存到一個(gè)日志文件中。
def?input_log(message): ????handler?=?logging.handlers.RotatingFileHandler(LOG_FILE,?maxBytes=1024?*?1024,?backupCount=5, ???????????????????????????????????????????????????encoding="utf-8")??#?實(shí)例化handler ????fmt?=?"%(asctime)s?-?%(levelname)s?-?%(message)s" ????formatter?=?logging.Formatter(fmt)??#?實(shí)例化formatter ????handler.setFormatter(formatter)??#?為handler添加formatter ????logger?=?logging.getLogger("tst")??#?獲取名為tst的logger ????logger.addHandler(handler)??#?為logger添加handler ????logger.setLevel(logging.DEBUG) ????logger.info(message)
Python 騷教程
此次的程序使用非常簡(jiǎn)單,首先下載源碼,后臺(tái)回復(fù)「拷貝」即可獲取源碼。然后修改下 USB_PATH 和 SAVE_PATH,這兩個(gè)參數(shù)表示的是你 U 盤(pán)所屬的位置和你想要保存的目錄。
LOG_FILE?=?"test.log" USB_PATH?=?"J:" SAVE_PATH?=?"D:disk_copy"
原程序參考來(lái)源:
http://uuzdaisuki.com/2018/03...
本文首發(fā)于公眾號(hào)「癡海」,后臺(tái)回復(fù)「1024」即可獲取最新編程資源。
比如這樣的:史上最全 Python 學(xué)習(xí)資料,PDF 電子書(shū)大合集
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44844.html
摘要:今天帶給大家一個(gè)非常有意思的程序,基于實(shí)現(xiàn)微信控制電腦。你可以通過(guò)在微信發(fā)送命令,來(lái)拍攝當(dāng)前電腦的使用者,然后圖片會(huì)發(fā)送到你的微信上。程序主要是通過(guò)使用庫(kù)來(lái)登錄到微信網(wǎng)頁(yè)端,然后通過(guò)來(lái)發(fā)送消息和接收消息。隨后會(huì)彈出一個(gè)微信網(wǎng)頁(yè)登錄的二維碼。 showImg(https://segmentfault.com/img/remote/1460000016807619); 閱讀文本大概需要 5...
摘要:?jiǎn)卧卦孢@是整數(shù)這才是元祖也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。雖然我水平很垃圾,但是我知道匿名函數(shù)有一種執(zhí)行方式叫做自執(zhí)行。看吧,這就是版的匿名函數(shù)自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數(shù)1 a = (1,) # 這才是元祖 也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。 我無(wú)聊的時(shí)候想過(guò),為什么單...
摘要:在盤(pán)上搭建相對(duì)完整的開(kāi)發(fā)環(huán)境,主要分為本身數(shù)據(jù)庫(kù)遠(yuǎn)程終端和版本控制等等幾個(gè)部分,下面分別介紹。有些項(xiàng)目現(xiàn)場(chǎng)開(kāi)發(fā)的情況是這樣。這意味著不能用網(wǎng)上的虛擬機(jī)。想要進(jìn)行開(kāi)發(fā),至少要有兩個(gè)東西和。數(shù)據(jù)庫(kù)是可以帶在盤(pán)上的。 showImg(https://segmentfault.com/img/bVPFvZ?w=1257&h=943); 是不是看到這張圖,覺(jué)得我這人真是苦逼啊?如果你有這方面的需...
閱讀 1007·2023-04-26 02:21
閱讀 2825·2021-09-24 09:47
閱讀 1616·2019-08-30 15:55
閱讀 2171·2019-08-30 14:01
閱讀 2330·2019-08-29 14:01
閱讀 2055·2019-08-29 12:46
閱讀 821·2019-08-26 13:27
閱讀 1945·2019-08-26 12:23