- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对以下代码有一些疑问。
from win32 import win32file
drives = []
drivebits=win32file.GetLogicalDrives()
for d in range(1,26):
mask=1 << d
if drivebits & mask:
drname='%c:\\' % chr(ord('A')+d)
t=win32file.GetDriveType(drname)
if t == win32file.DRIVE_REMOVABLE:
drives.append(drname)
print(drives)
1-当您使用 win32 模块中的 GetLogicalDrives 时,它返回一个整数。有人可以解释为什么吗?
2-为什么循环的范围在 1 到 26 之间?
3-按位与的原因是什么?
谢谢
最佳答案
win32
模块是 Win32 API 的真正低级包装器,因此通常您可以查看函数名称的 Windows 文档并获取所需信息。您可以找到 documentation for GetLogicalDrives here.
回答你的问题:
整数对应于可用驱动器:每个可用驱动器获得 1 位。因此,如果没有可用的驱动器,您将得到 0
,假设一个 32 位整数)返回。如果每个驱动器都可用,您将得到 0b11111111111111111111111111
(二进制)
有 26 个字母,所以它循环遍历 26 个数字。 实际上,您发布的代码只是从 1 循环到 25,我认为这是一个错误。它应该只是 range(26)
.
按位与是检查返回整数的各个位。请记住,整数的每个位 都对应一个驱动器盘符。例如,假设您的 C、D 和 G 驱动器可用。您可以像这样可视化返回值,其中第一行是潜在驱动器,第二行是二进制返回值:
ZYXWVUTSRQPONMLKJIHGFEDCBA # drive the bit corresponds to
00000000000000000001001100 # returned value, in binary, if C, D, and G are available
要检查驱动器 A 是否可用,您需要检查最小位是否为 1。检查各个位的方法是使用按位与。要检查最小位,你会做drivebits & 1
, 要检查驱动器 B,您需要检查第二位:drievebits & (1 << 1)
.要检查 C,您需要第三位:drivebits & (1 << 2)
.等等。
一些示例返回:
如果您只有 C 盘可用,GetLogicalDrives
会返回 0b100
(二进制),或 4
(十进制)。如果 C 和 D 可用,你会得到 0b1100
(二进制),或 12
(十进制)。
关于Python GetLogicalDrives 按位与,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790734/
我对以下代码有一些疑问。 from win32 import win32file drives = [] drivebits=win32file.GetLogicalDrives() for d in
我是 win32 api 的新手,需要帮助来理解 GetLogicalDrives() 函数的工作原理。我试图用所有未使用的可用驱动器填充 cbs_dropdownlist。这是我到目前为止所拥有的。
据我了解,如果我想检查X:\驱动器,如果使用GetLogicalDrives函数,则为第23位;所以,我试图测试它,但如果我将位掩码设置为 >>=23,它就会变成 0。 这是我的代码: DWORD d
我的一个程序需要帮助,该程序可以提取系统上的可用驱动器并打印有关驱动器的各种信息。我正在使用 VC++,对 C++ 还很陌生,需要一些高级输入或来自经验丰富的程序员的示例代码。 这是我当前的源代码:
我试图获取硬盘驱动器的名称或盘符,但仍然一头雾水,因为这里有几个函数可以使用。下面三个获取硬盘盘符的代码有什么区别?哪个更好用? Directory.GetLogicalDrives() Enviro
似乎我不太明白微软对“逻辑驱动器”和“卷”的定义之间的区别。 每个逻辑驱动器都是一个卷,而不是相反吗? 我很想得到一个解释+一个显示差异的简单例子。 最佳答案 获取逻辑驱动器 返回位掩码值(您可以将其
你好, 我使用 GetLogicalDrives 获取所有驱动器,我想进一步使用它来检测驱动器类型,然后使用 GetVolumeInformation 检查特定驱动器的状态。但是,我无法在 GetVo
我有一个用 QFileSystemModel 填充的 QTreeView,我将根路径设置为“\”(如“\\”)。这很好用,可以看到本地驱动器和 USB 驱动器。我的问题是,当我使用 DeviceIoC
我是一名优秀的程序员,十分优秀!