【python3】拷贝U盘文件

一、起因

       前天在公众号上,看到一篇如何用python偷偷拷贝别人U盘内容的文章推送,感觉这个想法挺有意思的,可惜是用的是linux系统,而且移动硬盘的盘符也是写死的,不够灵活,于是就自己动手写了一个demo。

       demo 的基本功能是 将U盘的所有内容拷贝到电脑上的指定位置,或者 将电脑上的指定文件拷贝到 U盘上。

二、代码

  

import os, shutil, psutil
from datetime import datetime

# 检测U盘并返回盘符
def get_udisk():
    """
    :return: 返回U盘盘符
    """
    disks = psutil.disk_partitions(all=False)  # 获取磁盘完整信息
    for disk in disks:
        disk = str(disk)
        if disk.find("removable") > -1:
            l = disk.find("',")
            udisk = (disk[18:l])
            return udisk
    print("未检测到U盘插入!")

# 检测目录是否有文件存在
def has_file(path):
    """
    :param path: 目标路径
    :return:
    """
    for parent, dir_names, file_names in os.walk(path):
        if file_names:
            return True

# 复制文件
def backup(target, backup_path):
    """
    :param target: 目标路径
    :param backup_path: 备份路径
    :return:
    """
    # 如果目标不存在文件,则没有必要执行复制操作
    if not has_file(target):
        print("'{0}' 目录下不存在文件!".format(target))
        return

    # 备份文件名、路径
    backup_file = "backup_" + datetime.now().strftime("%Y%m%d%H%M%S")
    backup_file_path = backup_path + '\\' +backup_file

    # 已存在备份就删除它
    if os.path.exists(backup_file_path):
        shutil.rmtree(backup_file_path)

    # 备份文件
    if os.path.exists(target):
        shutil.copytree(target,os.path.join(backup_path, backup_file))
        print("已成功备份!")

def main(target, isBackup):
    udisk = get_udisk()
    if udisk:
        if isBackup:
            backup(target=udisk, backup_path=target)  # 从U盘备份到target
        else:
            backup(target=target, backup_path=udisk)  # 从target备份到U盘

if __name__ == '__main__':
    target = r"C:\Users\Administrator\Desktop\test"
    isBackup = True  # Ture:从U盘备份到target  False:从target备份到U盘
    main(target, isBackup)

 

posted @ 2018-09-17 11:33  TurboWay  阅读(918)  评论(0编辑  收藏  举报