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


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

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


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

    以下是源码:

    1. import os
    2. import shutil
    3. import psutil
    4. import tkinter
    5. from tkinter import filedialog
    6. #author==龙华
    7. #主窗口创建
    8. win=tkinter.Tk()
    9. win.title('共享U盘')
    10. win.geometry('300x200')
    11. #桌面文件夹浏览,点击浏览可以在电脑上进行选择
    12. def liulan_button():
    13. filename=filedialog.askdirectory()
    14. liulan.delete(0,tkinter.END)
    15. liulan.insert(0,filename)
    16. #确定按钮执行动作,确定最终复制路径,启动复制函数
    17. def qdbutton_click():
    18. fina_path=updata_path()
    19. copy_files_from_usb(fina_path)
    20. #从U盘复制到自己电脑上
    21. def copy_files_from_usb(fina_path):
    22. usb=get_usb_drive()
    23. for x in usb:
    24. usb_path = x
    25. # 遍历U盘中的文件和文件夹
    26. for foldername, subfolders, filenames in os.walk(usb_path):
    27. for filename in filenames:
    28. # 构建源文件路径和目标文件路径
    29. source_file = os.path.join(foldername, filename)
    30. destination_file = os.path.join(fina_path, filename)
    31. # 复制文件
    32. shutil.copy(source_file, destination_file)
    33. print(f"已复制文件:{filename}-{fina_path}")
    34. print("复制完成")
    35. #获取u盘路径
    36. def get_usb_drive():
    37. # 获取所有磁盘分区
    38. partitions = psutil.disk_partitions()
    39. li=[]
    40. # 遍历磁盘分区,查找U盘
    41. for partition in partitions:
    42. if 'removable' in partition.opts: #包含removable为U盘
    43. # 获取U盘路径
    44. usb_drive = partition.mountpoint[0:2]
    45. # s=usb_drive[0:2]
    46. li.append(usb_drive)
    47. return li
    48. #确定最终的路径,如果不填路径则默认新建一个,如果浏览选择则使用新路径
    49. def updata_path():
    50. new_path=liulan.get()
    51. if not new_path:
    52. new_path=moren_path
    53. if not os.path.exists(new_path):
    54. os.makedirs(moren_path)
    55. return new_path
    56. #默认路径设置,默认放在桌面
    57. moren_path=tkinter.StringVar()
    58. moren_path.set(r'C:\Users\Administrator\Desktop\共享U盘文件') #可修改默认路径
    59. moren_path=moren_path.get()#获取默认路径
    60. #创建浏览选择窗口
    61. liulan=tkinter.Entry(win, textvariable=moren_path)
    62. liulan.place(x=50,y=55)
    63. #创建浏览按钮,绑定浏览函数
    64. liulanButton=tkinter.Button(win,text='浏览',command=liulan_button)
    65. liulanButton.place(x=200,y=50)
    66. #创建确定按钮,绑定复制函数
    67. quedingButton=tkinter.Button(win,text='确定',command=qdbutton_click,width=10,height=1)
    68. quedingButton.place(x=80,y=100)
    69. #author==longhua
    70. # 测试 实例化
    71. if __name__ == '__main__':
    72. win.mainloop()
    73. # copy_files_from_usb(quedingButton)

  • 相关阅读:
    1526_AURIX TC275 BootROM下
    【Git 常用命令】
    微服务学习笔记(二)
    知识联合——函数指针数组
    MAUI开发Android程序使PDA扫码广播消息转发至Web页面
    程序员这样提高英语,少走很多弯路
    VS2022开发Arduino(90%转载10%原创)
    勤于奋国外LEAD最近一些常态
    2012年认证杯SPSSPRO杯数学建模B题(第一阶段)减缓热岛效应全过程文档及程序
    阿里邮箱/网易邮箱个人版设置POP3使用
  • 原文地址:https://blog.csdn.net/leavemyleave/article/details/134366248