自己制作的很简单的一个MP3随机拷贝软件Python源码

前段时间老婆在某多多买了一个车载MP3的U盘,U盘容量64G,插入车载CD无法识别,估计是设备太老了,只能识别小容量的U盘吧,随后便产生了写一个自动化随机拷贝歌曲到U盘的软件的想法,说干就干,历经3个小时,写了这么个小软件,将源码分享给大家,大家一起学习!

import os
import random
import shutil
import psutil
import sys

# 定义判断盘符是否为USB
def is_usb(panfu):
    # 获取磁盘信息
    disks = psutil.disk_partitions()
    # 过滤出U盘信息
    usb_disks = [disk for disk in disks if "rw,removable" in disk.opts]
    # 获取U盘的盘符、容量和名称
    for usb_disk in usb_disks:
        path = usb_disk.device
        total_b, used_b, free_b = shutil.disk_usage(path)

        # 判断输入的盘符是否为U盘
        if panfu.upper() in path:
            return True
        else:
            return False

# 列出USB盘符信息
def usb_panfi_xinxi():
    # 获取磁盘信息
    disks = psutil.disk_partitions()
    # 过滤出U盘信息
    usb_disks = [disk for disk in disks if "rw,removable" in disk.opts]
    if usb_disks:
        # 获取U盘的盘符、容量和名称
        for usb_disk in usb_disks:
            path = usb_disk.device
            total_b, used_b, free_b = shutil.disk_usage(path)
            print("以下是本机移动U盘信息:")
            print(f"盘符:{path},可用空间为:{free_b // (1024 * 1024)}Mb\n")
    else:
        print("您还未插入U盘,请插入U盘后重新运行程序!\n")
        sys.exit()

# 设置MP3文件夹路径
mp3_dir_path = input("请输入MP3文件夹路径:例如:d:\\mp3\n")
# 判断文件夹是否存在
if os.path.exists(mp3_dir_path):
    print("您输入的MP3文件夹路径为:" + mp3_dir_path + "\n")
else:
    print("您输入的文件夹不存在,请重试!")
    sys.exit()


# 设置U盘盘符
usb_panfi_xinxi()
upan_dir_path = input("请输入U盘的盘符:例如:n:\\\n")
total_b, used_b, free_b = shutil.disk_usage(str(upan_dir_path))
upan_dir_daxiao = free_b / 1024.00 /1024.00
if is_usb(str(upan_dir_path)):
    print("U盘盘符确认正确!\n")
else:
    print("您输入的盘符并非U盘盘符,请重试!\n")
    sys.exit()
print("您输入的U盘盘符为:" + upan_dir_path + ",可用空间为:" + str(round(upan_dir_daxiao,2)) + "Mb\n")

# 获取需要复制的歌曲数量
gequ_shuliang = input("请输入您需要复制到U盘内的歌曲数量:例如:100\n")

# 获取MP3文件夹中所有文件的列表
files = [os.path.join(mp3_dir_path, f) for f in os.listdir(mp3_dir_path)]
# 获取文件夹内文件数量
mp3_dir_shuliang = len(files)
# 开始和用户输入的数量相对比
if int(gequ_shuliang) > mp3_dir_shuliang:
    print("文件夹内的文件数量不足,请重试!\n")
    sys.exit()
else:
    print("您输入的歌曲数量为:" + gequ_shuliang + "\n")
    print("以下歌曲将会拷贝至U盘内")
    # 随机获取一定数量的文件数
    random_files = random.sample(files, int(gequ_shuliang))
    # 循环获取文件信息
    file_size_heji = 0
    for file_path in random_files:
        file_size_heji = file_size_heji + os.path.getsize(file_path)
        print(file_path)
    file_size_heji = file_size_heji / 1024.00 / 1024.00
    file_size_heji = round(file_size_heji,2)
    print("文件大小共计:" + str(file_size_heji) + "Mb")
    if file_size_heji > upan_dir_daxiao:
        print('所选文件大小超过盘符剩余空间,请重新操作')
    else:
        querenmsg = input("请确认是否将以上文件拷贝至U盘内?确认请输入[yes]\n")
        if querenmsg == "yes":
            print("正在执行复制操作,请稍后!")
            # 开始执行拷贝操作
            jishu = 0
            for file_path in random_files:
                jishu = int(jishu + 1)
                print("歌曲:" + shutil.copy(file_path,upan_dir_path).strip(upan_dir_path) + "已拷贝至U盘内。")
                print('总进度已完成:{:.2%}'.format(int(jishu)/int(gequ_shuliang)))
            print("感谢您的使用!")
            sys.exit()
        else:
            print("感谢您的使用!")
            sys.exit()