U盤剛插入電腦,用Python十行代碼就把裡面的資料「盜取」了

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

當一個usb插入時,在後臺自動把usb裡的重要文件神不知鬼不覺地拷貝到本地或者上傳到某個服務器。

用Python寫一個程序讓它在後臺運行,每當有U盤插入的時候,就自動拷貝其中重要的文件!

那麼如何才能判斷U盤的插入呢?

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

就像標題所示,我們真的只用了10行(其實是11行,湊個整:)完成了這個"病毒"。我們可以發現usb中的目錄,在插入半分鐘後全部躺在了home目錄下了。

如何選擇性的複製文件?還是舉個例子吧。

我在某目錄下創建了testwalk文件夾,裡面有file123.txt三個文件,folder123三個文件夾,其中folder1中有文件file4.txt以及folder4

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

現在我們來測試一下

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

root存放的是當前位置,它會把./testwalk/下所有的文件夾作為根目錄,往下搜索

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

單獨查看 dirs

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

單獨查看 files

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

我們現在需要遞歸usb文件夾,找到所有的file,查看大小,如果小於,比如3M,就拷貝進home,大於就捨去。

shutil模塊

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

現在我們拿剛才的文件夾舉例子,如果想把file1.txt拷貝到folder2:

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

os.path.getsize()判斷大小

os.path.getsize(文件名)返回的是一個單位為byte的數值,如果用來查看文件大小,我們則需要手動寫一個函數,將其換算成容易閱讀的形式。

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

這裡我們只要選擇文件大小小於3M的即可,3M = 3 1024kB = 3 1024*1024byte

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

結合shutil.copy2就可以把選定大小的文件複製進我們的目標文件夾了

如何指定文件類型

這裡就需要正則表達式來幫助我們了。

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

用更加複雜的正則表達式可以更好地指定文件類型

根據修改時間篩選文件

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

這時候我在目錄下創建了一個文件叫做newfile

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了

總之,對每一個文件進行修改時間的篩選可以只複製那些近期,或者特定時期修改或者添加過的文件,這個功能在特定情況下很有用。

總結

其實,標題這麼起只是為了吸引大家注意,這就是一個小程序,也談不上病毒。我更想通過這個例子,展示python對於文件處理的強大能力,引發大家的學習熱情。

U盤剛插入電腦,用Python十行代碼就把裡面的資料“盜取”了


分享到:


相關文章: