判断磁盘占用情况
近期测试EncryptionAssistantpython版时,发现一个比较奇怪的bug:当程序运行的时候,无论是单线程还是多线程,总有一两个文件无法加密或解密,经过多次测试发现,每次python生成随机磁盘的时候都会选择到一个因着无法访问的盘符,比如有的U盘经过了全盘加密,当插入U盘的时候,会先占用盘符A,之后打开加密卷后占用盘符B,但是python的os.path.exists()会认为盘符A是不存在的,从而导致尝试挂载磁盘A失败,解决办法如下:
Python
import psutil
def random_disk() -> str:
"""生成随机盘符"""
origin_list: set[str] = {i for i in string.ascii_uppercase}
# 获取系统中已经被占用的盘符
used_disk_list: set[str] = {disk.device[0] for disk in psutil.disk_partitions()}
return random.sample(list(origin_list - used_disk_list), k=1)[0]
通过psutil可以更加准确的捕获到当前系统中已经存在哪些磁盘了,这个时候只需要去除一下便可获取到空闲盘符
Note
psutil的功能实在太强大了,调用某些硬件的数据还挺容易的,后续可以继续深入研究看看