【练习】检测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_path
        if 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.mfbz.cn/a/170273.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初刷leetcode题目(5)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

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

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

day15-Linux对文件系统的支持

1.Linux中使用文件系统分几个部分 1.1 有关于Linux中高速缓冲区的管理程序。 分页机制 buffer.c 1.2 文件系统的底层通用函数(对于硬盘的读写 分配 释放等,对于目录的节点管理 inode 内存与磁盘的映射) 1.3 对文件数据进行读写操作模块 (VFS:虚拟文件系统…

数据结构:枚举

概念 枚举主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: 比如下面的例子: public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3; 利用常量…

Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址:https://arxiv.org/abs/2211.08411 官方GitHub项目(代码和实体)&#xf…

python note

Python 基本操作 (赋值、分支及循环语句、使用 import 导入库); Python 的 With 语句 ; NumPy ,Python 下常用的科学计算库。TensorFlow 与之结合紧密; 向量 和 矩阵 运算(矩阵的加减法、矩阵…

基于安卓android微信小程序的好物分享系统

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…

【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个带头双向循环链表: 该带头双向循环链表使用动态内存分配空间,可以用来存储任意数量的同类型数据. 带头双向循环链表结点(No…

全志H616开发版

开发板介绍: 二、开发板刷机 SDFormatter TF卡的格式化工具、Win32Diskimager 刷机工具 刷机镜像为:Orangepizero2_2.2.0_ubuntu_bionic_desktop_linux4.9.170.img 使用MobaXterm_Personal_20.3连接使用 网络配置:nmcli dev wifi 命令接入网…

【机器学习】034_多层感知机Part.2_从零实现多层感知机

一、解决XOR问题 1. 回顾XOR问题: 如图,如何对XOR面进行分割以划分四个输入 对应的输出 呢? 思路:采用两个分类器分类,每次分出两个输入 ,再借助这两个分类从而分出 。 即采用同或运算,当两…

Redis轻松添加从节点:零阻塞、零烦恼,系统性能再飙升

点击上方蓝字关注我 生成环境的Redis有时需要替换或添加从节点,如果此时主库较大,添加从节点时将可能因为主节点在做bgsave数据备份时使得主库压力大,从而引起其他操作变慢,进而出现阻塞等操作。那么有什么方法可以尽最大程度地减…

C语言中的指针(上)

目录 一、基本概念 1.变量的存储空间 2.定义指针 3.引用与解引用 二、指针的算术运算、类型以及通用指针 1.指针的算数运算 2.指针类型以及通用型指针 三、指向指针的指针(pointers to pointers) 四、函数传值以及传引用 1.局部变量 2.从存储地…

【ctfshow】web入门-信息搜集-web21~28

SSS web21_爆破什么的,都是基操web22_域名也可以爆破的,试试爆破这个ctf.show的子域名web23_还爆破?这么多代码,告辞!web24_爆个🔨web25_爆个🔨,不爆了web26_这个可以爆web27_CTFsho…

软件测试之测试用例的设计

1. 测试用例的概念 软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境、测试步骤、测试数据、预期结果 2. 为什么在测试前要设计测试用例 测试用例是执行测试的依据 在回归测试的时候可以进行复用 是自动化测试编写测试脚本的依据 衡量需求的覆盖率…

C#开发的OpenRA游戏之属性QuantizeFacingsFromSequence(7)

C#开发的OpenRA游戏之属性QuantizeFacingsFromSequence(7) 前面分析了身体的方向,在这里继续QuantizeFacingsFromSequence属性,这个属性就是通过序列定义文件里获取身体的方向。 根据前面分析可知,同样有一个信息类QuantizeFacingsFromSequenceInfo: [Desc("Deriv…

基于安卓android微信小程序美容理发店预约系统app

项目介绍 为美容院设计一个系统以减少员工的工作量就成为了想法的初始状态。紧接着对美容院进行进一步的调查发现我的想法已然落后。基本上每个美容院都以有了自己的信息系统,并且做的已经较完善了。 在这时我突然想到,现在关注美容养生的人越来越多&am…

Windows 安装 Docker Compose

目录 前言什么是 Docker Compose ?安装 Docker Compose配置环境变量结语开源项目 前言 在当今软件开发和部署领域,容器化技术的应用已成为提高效率和系统可移植性的关键手段。Docker,作为领先的容器化平台,为开发人员提供了轻松构…

MobaXterm如何连接CentOS7的Linux虚拟机?Redis可视化客户端工具如何连接Linux版Redis?

一、打开Lunix虚拟机,进入虚拟机中,在终端中输入ifconfig,得到以下信息,红框中为ip地址 二、打开MobaXterm,点击session 选择SSH,在Remote host中输入linux得到的IP地址,Specify username中可起一个任意的连接名称。 输入密码 四、…

RoCE、IB和TCP等网络的基本知识及差异对比

目前有三种RDMA网络,分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP。 其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 ,技术先进,但是成本高昂。 而RoCE 和 iWARP都是基于以太网的…

leetcode数据结构与算法刷题(三)

目录 第一题 交叉链表 思想: 注意点 第一步先求两个链表的长度 第二步 让长的先走,当长短一样时一起走。 犯错点 第二题 判断是有环 思想: 注意 错误分享 第三题(重点面试题) 思路: 这题面试问题&a…
最新文章