自己制作的很简单的一个MP3随机拷贝软件Python源码
- 编程笔记
- 2024-02-07
- 414热度
- 0评论
前段时间老婆在某多多买了一个车载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()