使用 Python 查找盘符 (Windows)

新手上路,请多包涵

我正在尝试编写一个 python 脚本(我是新手),它将在 Windows 上每个连接的驱动器的根目录中搜索一个密钥文件,然后返回它在将变量设置为驱动器号时的驱动器号。

目前我有:

 import os
if os.path.exists('A:\\File.ID'):
        USBPATH='A:\\'
        print('USB mounted to', USBPATH)
    if os.path.exists('B:\\File.ID'):
        USBPATH='B:\\'
        print('USB mounted to', USBPATH)
    if os.path.exists('C:\\File.ID'):

-- 然后对每个驱动器字母 A 到 Z 重复出现。自然地,这将需要输入很多内容,我只是想知道是否有一种解决方法可以使我的代码保持整洁和尽可能少(或者这是唯一的方法吗? ).

此外,如果找不到驱动器(IE 说请插入您的 USB),有没有办法让它打印错误,然后返回开始/循环?就像是

print('Please plug in our USB drive')
return-to-start

有点像 GOTO 命令提示符命令?

编辑:

对于有类似未来查询的人,这是解决方案:

 from string import ascii_uppercase
import os

def FETCH_USBPATH():
    for USBPATH in ascii_uppercase:
         if os.path.exists('%s:\\File.ID' % SVPATH):
            USBPATH='%s:\\' % USBPATH
            print('USB mounted to', USBPATH)
            return USBPATH + ""
    return ""

drive = FETCH_USBPATH()
while drive == "":
    print('Please plug in USB drive and press any key to continue...', end="")
    input()
    drive = FETCH_USBPATH()

此脚本提示用户插入包含“file.id”的驱动器,并在连接时将驱动器号打印到控制台并允许使用“驱动器”作为变量。

原文由 Julian White 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 959
2 个回答

因为你想反复检查驱动器是否存在,你可能想把它作为一个单独的函数移动,就像这样

from string import ascii_uppercase
from os import path

def get_usb_drive():
    for drive in ascii_uppercase:
        if path.exists(path.join(drive, "File.ID")):
            return drive + ":\\"
    return ""

然后,如果您希望程序反复提示用户插入设备,您可能希望循环运行它,如下所示

drive = get_usb_drive()
while drive == "":
    print('Please plug in our USB drive and press any key to continue...',end="")
    input()
    drive = get_usb_drive()

最初,我们将尝试使用 get_usb_drive() 获取驱动器,如果找不到,它将返回一个空字符串。我们迭代直到 get_usb_drive() 的返回值是一个空字符串,并提示用户插入设备并等待按键。

注意: 我们使用 os.path.join 创建实际的文件系统路径,而不是所有手动字符串连接。

原文由 thefourtheye 发布,翻译遵循 CC BY-SA 3.0 许可协议

Python 对此有一个简单的解决方案。使用路径库模块。

 import pathlib
drive = pathlib.Path.home().drive
print(drive)

原文由 r3t40 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题