在Python中,如何检查驱动器是否存在而不引发可移动驱动器错误?

2024-01-11

这是我到目前为止所拥有的:

import os.path as op
for d in map(chr, range(98, 123)): #drives b-z
    if not op.isdir(d + ':/'): continue

问题是在Windows中弹出“No Disk”错误框:

maya.exe - 无磁盘:没有磁盘 驱动器。请将磁盘插入 驱动器 \Device\Harddisk1\DR1 [取消、重试、继续]

我无法捕获异常,因为它实际上并没有引发 Python 错误。

显然,这种情况仅发生在已分配字母但未插入驱动器的可移动驱动器上。

有没有一种方法可以解决这个问题,而无需专门告诉脚本要跳过哪些驱动器?

在我的场景中,我在学校实验室,驱动器号根据我所在的实验室计算机而变化。另外,我访问磁盘管理的安全权限为零。


Use the ctypes http://docs.python.org/library/ctypes.html包来访问GetLogicalDrives http://msdn.microsoft.com/en-us/library/aa364972%28v=vs.85%29.aspx功能。这不需要 pywin32 等外部库,因此它是可移植的,尽管使用起来有点笨拙。例如:

import ctypes
import itertools
import os
import string
import platform

def get_available_drives():
    if 'Windows' not in platform.system():
        return []
    drive_bitmask = ctypes.cdll.kernel32.GetLogicalDrives()
    return list(itertools.compress(string.ascii_uppercase,
               map(lambda x:ord(x) - ord('0'), bin(drive_bitmask)[:1:-1])))

itertools.compress在Python 2.7和3.1中添加;如果您需要支持

def compress(data, selectors):
    for d, s in zip(data, selectors):
        if s:
            yield d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中,如何检查驱动器是否存在而不引发可移动驱动器错误? 的相关文章

随机推荐

  • 如何在C中初始化char **?

    我对 C 还很陌生 我应该做一个简单的单词搜索谜题 所以对于 字典 我做了 char dictionary DOG ELEPHANT CAT ETC 但是当我尝试编译时 我收到一条警告 提示字典中的每个单词 标量初始值设定项中存在多余元素
  • MVC 视图的命名空间问题 - Razor 引擎

    我将 System Web DataVisualization 的引用添加到我的 MVC 项目中 现在 当我尝试将命名空间添加到 web config 时 出现错误 CS0234 命名空间 System Web UI 中不存在类型或命名空间
  • Intel芯片上的半精度浮点运算

    Intel芯片上可以进行半精度浮点运算吗 我知道如何加载 存储 转换半精度浮点数 1 但我不知道如何在不转换为单精度浮点数的情况下对它们进行加 乘 1 https software intel com en us articles perf
  • Flutter doctor - Windows 版本(无法确认安装的 Windows 版本是否为 10 或更高版本)

    我刚刚在主频道上将 Flutter 表单 3 5 0 12 0 pre 168 更新为 3 6 0 1 0 pre 35 我在主通道上 因为在稳定通道上我在键盘输入方面遇到了麻烦 但这不应该与这个 问题 有任何关系 实际上这不是一个真正的问
  • 操作完成后如何重置 EditText?

    我想在按下按钮后将我的 EditText 重置回空的 空间 或 提示 该按钮将使用 EditText 字段的输入完成活动 我与 Android 的冒险就这样开始了 干杯 谢谢 SEND SMS btnSendSMS Button findV
  • 将 ffmpeg 与 Python 2.7 结合使用

    我一直尝试在 Python 2 7 中安装 pyffmpeg 但没有成功 我找到了一个 Python 2 6 的包 但我无法让它工作 所以 我一直在考虑2 7 我在这个网站上看过其他人之前的帖子 但他们没有帮助 有人对此有经验吗 最终 我想
  • Flexbox 中的align-self 属性不起作用?

    我试图理解弹性盒 我想让 第一个 块拉伸以匹配浏览器的整个宽度 并使 第二个 块固定大小并左对齐 所以我用了align items flex end在父级 并尝试使用拉伸第一个块align self stretch在 第一个 块中 这是行不
  • 如何使 Angular.js 应用程序在服务器同步可用时离线

    我正在寻找一种方法或一个库来处理这个问题 这个想法是将数据存储在本地存储中 并在连接可用时同步到后端 http pouchdb com http pouchdb com 看起来是一个很酷的解决方案 但有人在生产中使用过它吗 UPDATE 现
  • 具有多个 LIKE 的选择命令

    功能性 用户将文本输入到文本框A中 在数据库记录中搜索与用户输入相对应的名字和姓氏 问题 我得到的结果似乎只是搜索 名字 字段 而不是名字和姓氏字段 Example 搜索 Mike 返回 迈克 史密斯 迈克 琼斯 搜索 琼斯 Change
  • Python 中二维多项式的“polyfit”等价物

    我想找到一个最小二乘解a中的系数 z a0 a1 x a2 y a3 x 2 a4 x 2 y a5 x 2 y 2 a6 y 2 a7 x y 2 a8 x y 给定数组x y and z长度为 20 基本上我正在寻找相当于numpy p
  • C++ 类型的解引用迭代器

    我试图创建一个函数来对所有元素求和std vector template
  • 如何在 JavaScript 中检查空值?

    如何在 JavaScript 中检查空值 我写了下面的代码 但它不起作用 if pass null cpass null email null cemail null user null alert fill all columns ret
  • 从 C# 调用 C++ 函数

    我有以下 C 函数 void FillAndReturnString char someString char sourceString test someString new char 5 memcpy someString source
  • python中的递归函数如何存储和处理变量?

    我对下面的代码很困惑 def a x print x if x gt 0 a x 1 print x I am confused with this print statement a 5 上面的代码输出 5 4 3 2 1 0 0 1 2
  • 如何使用 OpenCV 使用多处理并行处理图像?

    我的文件夹中有一组图像 我想使用一些 OpenCV 函数对其进行预处理 功能 detectAndaligncrop 使用 OpenCV 对其图像路径进行预处理并返回输出图像 我可以使用以下方法来做到这一点 for image path in
  • 安卓 OpenAL?

    有没有人为 Android 构建过 OpenAL 或者在系统上找到了它的共享库 这似乎是任何类型的游戏的明显需求 但没有可用的资源 据我所知 Android java 声音库似乎无法进行音高变化 因此似乎需要 OpenAL 我知道 Open
  • 从 Excel 文件中读取内容

    package jexcel jxl nimit import java io import jxl Cell import jxl Sheet import jxl Workbook import jxl read biff BiffEx
  • 如何对 Next.js 动态组件进行单元测试?

    Next jsdynamic HOC 组件并不是很容易测试 我现在有两个问题 第一个笑话是未能正确编译动态导入 require resolveWeak is not a function 似乎是由下一个 babel 插件添加的 其次我无法很
  • Python 检查列表项是否为整数? [复制]

    这个问题在这里已经有答案了 我有一个包含字符串格式的数字和字母的列表 mylist 1 orange 2 3 4 apple 我需要拿出一个仅包含数字的新列表 mynewlist 1 2 3 4 如果我有办法检查列表中的每个项目是否可以转换
  • 在Python中,如何检查驱动器是否存在而不引发可移动驱动器错误?

    这是我到目前为止所拥有的 import os path as op for d in map chr range 98 123 drives b z if not op isdir d continue 问题是在Windows中弹出 No