【练习】检测U盘并自动复制内容到电脑的软件

软件作用:
    有U盘插在电脑上后,程序会检测到U盘的路径。
    自己可以提前设置一个保存复制文件的路径或者使用为默认保存的复制路径(默认为桌面,可自行修改)。
    检测到U盘后程序就会把U盘的文件复制到电脑对应的文件夹内。没有任何提示。
    目前应该还存在一些问题,但是简单的使用是可以满足。
    本机测试没多大问题。当然我的U盘有限,电脑有限,没经过充分的测试,不确保在其他电脑上可以正常运行。

除开功能,目前已知的问题:
  1、当在运行时关闭窗口会出现程序未响应会卡十几秒然后结束掉程序。
  2、默认保存路径不显示在界面上


后面会持续优化一下,并打包成exe文件,然后可以设置为开机自启动,这样就不用每次手动操作。

以下是源码:

import os
import shutil
import psutil
import tkinter
from tkinter import filedialog#author==龙华#主窗口创建
win=tkinter.Tk()
win.title('共享U盘')
win.geometry('300x200')#桌面文件夹浏览,点击浏览可以在电脑上进行选择
def liulan_button():filename=filedialog.askdirectory()liulan.delete(0,tkinter.END)liulan.insert(0,filename)#确定按钮执行动作,确定最终复制路径,启动复制函数
def qdbutton_click():fina_path=updata_path()copy_files_from_usb(fina_path)#从U盘复制到自己电脑上
def copy_files_from_usb(fina_path):usb=get_usb_drive()for x in usb:usb_path = x# 遍历U盘中的文件和文件夹for foldername, subfolders, filenames in os.walk(usb_path):for filename in filenames:# 构建源文件路径和目标文件路径source_file = os.path.join(foldername, filename)destination_file = os.path.join(fina_path, filename)# 复制文件shutil.copy(source_file, destination_file)print(f"已复制文件:{filename}-{fina_path}")print("复制完成")#获取u盘路径
def get_usb_drive():# 获取所有磁盘分区partitions = psutil.disk_partitions()li=[]# 遍历磁盘分区,查找U盘for partition in partitions:if 'removable' in partition.opts: #包含removable为U盘# 获取U盘路径usb_drive = partition.mountpoint[0:2]# s=usb_drive[0:2]li.append(usb_drive)return li#确定最终的路径,如果不填路径则默认新建一个,如果浏览选择则使用新路径
def updata_path():new_path=liulan.get()if not new_path:new_path=moren_pathif not os.path.exists(new_path):os.makedirs(moren_path)return new_path#默认路径设置,默认放在桌面
moren_path=tkinter.StringVar()
moren_path.set(r'C:\Users\Administrator\Desktop\共享U盘文件')  #可修改默认路径
moren_path=moren_path.get()#获取默认路径#创建浏览选择窗口
liulan=tkinter.Entry(win, textvariable=moren_path)
liulan.place(x=50,y=55)#创建浏览按钮,绑定浏览函数
liulanButton=tkinter.Button(win,text='浏览',command=liulan_button)
liulanButton.place(x=200,y=50)#创建确定按钮,绑定复制函数
quedingButton=tkinter.Button(win,text='确定',command=qdbutton_click,width=10,height=1)
quedingButton.place(x=80,y=100)#author==longhua# 测试 实例化
if __name__ == '__main__':win.mainloop()# copy_files_from_usb(quedingButton)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch微调终极指南1:预训练模型调整

如今,在训练深度学习模型时,通过根据自己的数据微调预训练模型来进行迁移学习(transfer learning)已成为首选方法。 通过微调这些模型,我们可以利用他们的专业知识并使它们适应我们的特定任务,从而节省宝贵…

【miniQMT实盘量化4】获取实时行情数据

前言 上篇,我们介绍了如何获取历史数据,有了历史数据,我们可以进行分析和回测。但,下一步,我们更需要的是实时数据,只有能有效的监控实时行情数据,才能让我们变成市场上的“千里眼,…

从0开始学习JavaScript--深入探究JavaScript类型化数组

JavaScript类型化数组是一种特殊的数组类型,引入了对二进制数据的更底层的操作。这种数组提供了对内存中的二进制数据直接进行读写的能力,为处理图形、音频、视频等大规模数据提供了高效的手段。本文将深入探讨JavaScript类型化数组的基本概念、常见类型…

场景交互与场景漫游-对象选取(8-2)

对象选取示例的代码如程序清单8-11所示: /******************************************* 对象选取示例 *************************************/ // 对象选取事件处理器 class PickHandler :public osgGA::GUIEventHandler { public:PickHandler() :_mx(0.0f), _my…

48. 旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…

用平板当电脑副屏(spacedesk)双端分享

文章目录 1.准备工作2.操作流程1. 打开spacedesk点击2. 勾选USB Cable Android3. 用数据线连接移动端和pc端,选择仅充电4. 打开安装好的spacedesk 记得在win系统中设置扩展显示器: 1.准备工作 下载软件spacedesk Driver Console pc端: 移动…

macos苹果电脑清理软件有哪些?cleanmymac和腾讯柠檬哪个好

MacOS是一款优秀的操作系统,但是随着使用时间的增加,它也会产生一些不必要的垃圾文件,占用磁盘空间和内存资源,影响系统的性能和稳定性。为了保持MacOS的清洁和高效,我们需要使用一些专业的清理软件来定期扫描和清除这…

Pandas数据集的合并与连接merge()方法_Python数据分析与可视化

数据集的合并与连接 merge()解析merge()的主要参数 merge()解析 merge()可根据一个或者多个键将不同的DataFrame连接在一起,类似于SQL数据库中的合并操作。 数据连接的类型 一对一的连接: df1 pd.DataFrame({employee: [Bob, Jake, Lisa, Sue], grou…

【Linux】:体系结构与进程概念

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux体系结构和进程的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入…

腾讯云轻量数据库1核1G性能测评、租用费用和详细介绍

腾讯云轻量数据库服务采用腾讯云自研的新一代云原生数据库 TDSQL-C,融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL,实现超百万级 QPS 的高吞吐,128TB 海量分布式智能存储,保障数据安全可靠。腾讯云百科t…

机器人制作开源方案 | 智能照科植物花架

作者:付菲菲、于海鑫、王子敏单位:黑河学院指导老师:索向峰、李岩 1. 概述 1.1设计背景​ 随着时代的发展,城市化脚步加快、城市人口密度越来越大、城市生活节奏快压力大作息难成规律。城市建筑建筑面积迅速增加、而绿…

Leetcode—5.最长回文子串【中等】

2023每日刷题(三十五) Leetcode—5.最长回文子串 中心扩展法算法思想 可以使用一种叫作“中心扩展法”的算法。由回文的性质可以知道,回文一定有一个中心点,从中心点向左和向右所形成的字符序列是一样的,并且如果字符…

Vue移动 HTML 元素到指定位置 teleport 标签

teleport 标签&#xff1a;用于将组件中的 HTML 元素移动到任意的位置。 使用 teleport 标签移动 HTML 元素&#xff1a; <!-- 将 teleport 中的内容移动到 body 标签中 --> <teleport to"body"><div><h3>我是第三层组件的标题</h3>…

如何使用http来获取thingsbord中的设备数据

背景 有个读者问我,他想做tb的二次开发,想要通过一个接口来查询设备的遥测数据。 于是我给他写了这篇文章。 具体实现 由于他使用的是cloud版本,于是我使用cloud来做演示 文档的接口 https://thingsboard.cloud/swagger-ui/#/telemetry-controller/getTimeseriesUsing…

V100 GPU服务器安装CUDA教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux C 线程间同步机制

线程间同步机制 概述保护机制互斥锁创建互斥锁  pthread_mutex_init加锁  pthread_mutex_lock解锁  pthread_mutex_unlock删除锁  pthread_mutex_destroy 条件变量创建条件变量  pthread_cond_init激活条件变量  pthread_cond_signal等待条件变量  pthread_cond_…

python实现炫酷的屏幕保护程序

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 上次的文章如何实现一个下班倒计时程序的阅读量很高&#xff0c;觉得也很实用酷炫&#xff0c;下边是昨天的体验…

QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序

环境&#xff1a;Windows 10 64位 Opencv版本&#xff1a;4.5 QT&#xff1a;5.14 QT5 MSVC2017配置OpenCV 版本参考&#xff1a; opencv msvc c对应版本 1.安装MSVC2017&#xff08;vs2017&#xff09; 打开Visual Studio Installer&#xff0c;点击修改 选择vs2017生成工…

java使用 TCP 的 Socket API 实现客户端服务器通信

一&#xff1a;什么是 Socket(套接字) Socket 套接字是由系统提供于网络通信的技术, 是基于 TCP/IP 协议的网络通信的基本操作&#xff0c;要进行网络通信, 需要有一个 socket 对象, 一个 socket 对象对应着一个 socket 文件, 这个文件在 网卡上而不是硬盘上, 所以有了 sokcet…

3D应用开发引擎HOOPS如何促进AEC数字化架构革新?

随着科技的不断发展&#xff0c;建筑、工程和施工&#xff08;AEC&#xff09;行业正在掀起令人瞩目的数字化转型浪潮。在这一变革的过程中&#xff0c;Tech Soft 3D的HOOPS SDK&#xff08;软件开发工具包&#xff09;正扮演着关键的角色&#xff0c;为构建世界一流的AEC和BIM…