Python實(shí)現(xiàn)U盤(pán)數(shù)據(jù)復(fù)制工具
1. 簡(jiǎn)介
顧名思義,U盤(pán)小偷是一款功能強(qiáng)大的U盤(pán)數(shù)據(jù)復(fù)制工具。它可以幫助用戶快速、方便地將U盤(pán)中的文件復(fù)制到計(jì)算機(jī)中,此工具簡(jiǎn)潔易用,用戶只需簡(jiǎn)單更改配置文件具體參數(shù)即可完成對(duì)U盤(pán)內(nèi)文件的復(fù)制工作。
功能:
- 打包好的程序雙擊運(yùn)行無(wú)控制臺(tái)界面彈出,后臺(tái)靜默搜索U盤(pán)插入狀態(tài),更加隱私下載。
- 可通過(guò)更改config.ini配置文件從而更改檢索U盤(pán)的時(shí)間間隔、文件copy的目的路徑、可選的copy內(nèi)容等,具體可以參考以下config.ini的文檔說(shuō)明。
- 可自定義選擇篩選需要copy的文件內(nèi)容,亦可選擇全部下載。
config.ini文件相關(guān)內(nèi)容
# PASTE_PATH:需要復(fù)制到電腦的文件夾路徑 # KEYWORD:關(guān)鍵詞索引,如果留空不填寫(xiě)則表示復(fù)制U盤(pán)下的所有文件以及文件夾 # INTERVAL_TIME:更改檢查U盤(pán)是否存在的間隔時(shí)間,默認(rèn)1s檢查一次 [config] PASTE_PATH = D:\usb kEYWORD = INTERVAL_TIME = 5
2. 運(yùn)行效果
3. 相關(guān)源碼
import os import logging import configparser from psutil import disk_partitions from time import sleep from shutil import copytree, copyfile, rmtree, move logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) # 讀取API配置 config = configparser.ConfigParser() config.read('config.ini') pastePATH = config.get('config', 'PASTE_PATH') ukeyword = config.get('config', 'kEYWORD') intervalTime = config.get('config', 'INTERVAL_TIME') # 獲取U盤(pán)的盤(pán)符 # disk_partitions() 打印一下他的返回值,就會(huì)完全清楚下面這個(gè)函數(shù) def get_usb_dispart(): for item in disk_partitions(): if item.opts == "rw,removable": # 可讀、可移動(dòng)介質(zhì) logger.info("發(fā)現(xiàn)USB:%s" % str(item)) return item.device logger.info("沒(méi)有發(fā)現(xiàn)USB") return None # 讀取想要的文件 u盤(pán)所有文件或者文件名含有某個(gè)字段的文件及文件夾 # 1、文件夾含有該字段:復(fù)制文件夾; # 2、文件含有字段,復(fù)制文件。 def get_useb_file(src, path="", select=None, dst=r"C:\usb"): if select is None:# 無(wú)篩選規(guī)則,復(fù)制所有 copytree(src, dst) logger.info("復(fù)制%s盤(pán)USB所有內(nèi)容到%s" % (src, dst)) else: # 復(fù)制部分 paths = os.listdir(os.path.join(src, path)) # 獲取當(dāng)前路徑下的所有文件及文件夾 for item in paths: item = os.path.join(path, item) if select in item: if os.path.isdir(os.path.join(src, item)): #如果是文件夾,還有字符直接復(fù)制文件夾;否則遞歸遍歷文件夾下的內(nèi)容 try: copytree(os.path.join(src, item), os.path.join(dst, item)) except Exception as e: try: rmtree(os.path.join(dst, item)) except: continue copytree(os.path.join(src, item), os.path.join(dst, item)) else: try: copyfile(os.path.join(src, item), os.path.join(dst, item)) except Exception as e: os.makedirs(os.path.dirname(os.path.join(dst, item))) try: move(os.path.join(dst, item)) except: continue copyfile(os.path.join(src, item), os.path.join(dst, item)) logger.info("復(fù)制%s 到 %s" % (os.path.join(src, item), (os.path.join(dst, item)))) else: if os.path.isdir(os.path.join(src, item)): get_useb_file(src, item, select, dst) if __name__ == "__main__": while True: path = get_usb_dispart() if path is not None: get_useb_file(src=path, select=ukeyword, dst=pastePATH) break sleep(int(intervalTime))
到此這篇關(guān)于Python實(shí)現(xiàn)U盤(pán)數(shù)據(jù)復(fù)制工具的文章就介紹到這了,更多相關(guān)Python U盤(pán)數(shù)據(jù)復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中列表、字典、元組數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單學(xué)習(xí)筆記
這篇文章主要介紹了Python中列表、字典、元組數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單學(xué)習(xí)筆記,文中講到了字典在Python3中特性和操作方法的一些變化,需要的朋友可以參考下2016-03-03python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類的方法分析
這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建類的方法,結(jié)合實(shí)例形式分析了Python動(dòng)態(tài)創(chuàng)建類的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下2019-06-06django model 條件過(guò)濾 queryset.filter(**condtions)用法詳解
這篇文章主要介紹了django model 條件過(guò)濾 queryset.filter(**condtions)用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解
今天小編就為大家分享一篇Pandas_cum累積計(jì)算和rolling滾動(dòng)計(jì)算的用法詳解,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07python實(shí)現(xiàn)連續(xù)圖文識(shí)別
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)連續(xù)圖文識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12使用Django實(shí)現(xiàn)把兩個(gè)模型類的數(shù)據(jù)聚合在一起
這篇文章主要介紹了使用Django實(shí)現(xiàn)把兩個(gè)模型類的數(shù)據(jù)聚合在一起,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03django中間件及自定義中間件的實(shí)現(xiàn)方法
中間件就是在目標(biāo)和結(jié)果之間進(jìn)行的額外處理過(guò)程,在Django中就是request和response之間進(jìn)行的處理,相對(duì)來(lái)說(shuō)實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,這篇文章主要介紹了django中間件以及自定義中間件?,需要的朋友可以參考下2023-06-06使用jupyter notebook直接打開(kāi).md格式的文件
這篇文章主要介紹了使用jupyter notebook直接打開(kāi).md格式的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python3 微信支付(小程序支付)V3接口的實(shí)現(xiàn)
本文主要介紹了Python3 微信支付(小程序支付)V3接口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01