使用Python查找驱动器号(Windows)

时间:2015-03-13 06:20:44

标签: python string python-3.x

我正在尝试编写一个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”的驱动器,并在连接时将驱动器号输出到控制台,并允许使用“drive”作为变量。

3 个答案:

答案 0 :(得分:3)

使用循环并生成路径名称:

import os
import string

for l in string.ascii_uppercase:
    if os.path.exists('%s:\\File.ID' % l):
        USBPATH='%s:\\' % l
        print('USB mounted to', USBPATH)
        break

答案 1 :(得分:3)

由于您要反复检查驱动器是否存在,您可能希望将其作为单独的功能移动,如下所示

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创建实际的文件系统路径,而不是所有手动字符串连接。

答案 2 :(得分:2)

Python为此提供了一个简单的解决方案。使用pathlib模块。

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