使用Python實(shí)現(xiàn)USB自動(dòng)復(fù)制文件
USB驅(qū)動(dòng)器作為常見的數(shù)據(jù)存儲(chǔ)設(shè)備,經(jīng)常用于數(shù)據(jù)傳輸和備份。
然而,我們?cè)谑謩?dòng)處理文件復(fù)制可能效率低下且容易出錯(cuò)。
因此,我們可以利用Python編寫腳本來自動(dòng)化這一過程,提高效率和數(shù)據(jù)安全性。
準(zhǔn)備工作
首先,我們需要安裝Python以及幾個(gè)必要的庫:os、shutil、time和psutil。這些庫將幫助我們實(shí)現(xiàn)文件操作、定時(shí)和系統(tǒng)監(jiān)測(cè)功能。
獲取硬盤驅(qū)動(dòng)器列表
這段代碼利用psutil庫獲取系統(tǒng)中可移動(dòng)的磁盤驅(qū)動(dòng)器列表,例如USB驅(qū)動(dòng)器。
import psutil def get_disk_drives(): disk_partitions = psutil.disk_partitions(all=False) drives = [partition.device.upper() for partition in disk_partitions if partition.fstype != "" and "removable" in partition.opts] return drives
文件拷貝功能
這段代碼定義了一個(gè)函數(shù),用于將指定文件類型(.jpg、.png、.txt)從USB驅(qū)動(dòng)器拷貝到指定目標(biāo)文件夾。
它確保在復(fù)制過程中限制了數(shù)據(jù)傳輸?shù)乃俣龋苊膺^載系統(tǒng)。
import os import shutil def copy_ppt_files(source_folder, destination_folder, speed_limit_kb): for root, dirs, files in os.walk(source_folder): for file in files: if file.endswith((".jpg", ".png", ".txt")): src_file = os.path.join(root, file) dst_file = os.path.join(destination_folder, os.path.relpath(src_file, source_folder)) os.makedirs(os.path.dirname(dst_file), exist_ok=True) with open(src_file, 'rb') as fsrc: with open(dst_file, 'wb') as fdst: shutil.copyfileobj(fsrc, fdst, length=speed_limit_kb * 1024)
檢查新插入的USB驅(qū)動(dòng)器
此函數(shù)定期檢查新插入的USB驅(qū)動(dòng)器,并調(diào)用文件拷貝函數(shù)將特定文件類型復(fù)制到預(yù)定目標(biāo)文件夾。
它通過在列表中記錄已知驅(qū)動(dòng)器來避免重復(fù)操作。
import time def check_for_new_drive(speed_limit_kb=10240): drives = get_disk_drives() new_drives = [drive for drive in drives if drive not in known_drives] for new_drive in new_drives: known_drives.append(new_drive) print(f"New drive detected: {new_drive}") time.sleep(3) # 等待3秒后再開始拷貝 copy_ppt_files(new_drive, destination_drive, speed_limit_kb)
主程序
主程序初始化了已知驅(qū)動(dòng)器列表和目標(biāo)路徑,并通過調(diào)用check_for_new_drive函數(shù)來持續(xù)檢查新插入的USB驅(qū)動(dòng)器。
if __name__ == "__main__": known_drives = [] excluded_drives = [drive + ':' for drive in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"] destination_drive = "H://u盤" # 目標(biāo)路徑 if not os.path.exists(destination_drive): os.makedirs(destination_drive) while True: check_for_new_drive() time.sleep(60) # 每隔60秒檢查一次
到此這篇關(guān)于使用Python實(shí)現(xiàn)USB自動(dòng)復(fù)制文件的文章就介紹到這了,更多相關(guān)Python USB復(fù)制文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python內(nèi)置進(jìn)制轉(zhuǎn)換函數(shù)的操作
這篇文章主要介紹了python內(nèi)置進(jìn)制轉(zhuǎn)換函數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07python3 常見解密加密算法實(shí)例分析【base64、MD5等】
這篇文章主要介紹了python3 常見解密加密算法,結(jié)合實(shí)例形式分析了Python的base64模塊加密,以及基于pycrypto模塊的MD5加密等相關(guān)操作技巧,需要的朋友可以參考下2019-12-12scipy稀疏數(shù)組coo_array的實(shí)現(xiàn)
本文主要介紹了scipy稀疏數(shù)組coo_array的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python?Celery定時(shí)任務(wù)詳細(xì)講解
這篇文章主要介紹了Python?Celery定時(shí)任務(wù)詳細(xì)講解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08