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

cidc1ykv  于 2023-02-06  发布在  Python
关注(0)|答案(4)|浏览(203)

我正在尝试写一个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的每个驱动器号重复。自然,这将是一个很大的打字输出,我只是想知道是否有一个变通办法,以保持我的代码整洁和尽可能少(或者这是唯一的方法?)
    此外,有没有办法让它打印一个错误,如果驱动器找不到(即说,请插入您的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"用作变量。

mftmpeh8

mftmpeh81#

Python对此有一个简单的解决方案,使用pathlib模块。

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

svmlkihl2#

由于您希望反复检查驱动器是否存在,因此可能希望将其作为一个单独的函数,如下所示

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

5fjcxozz

5fjcxozz3#

使用循环并生成路径名:

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
carvr3hs

carvr3hs4#

最简单的方法是:

from pathlib import Path
root = Path(__file__).anchor  # 'C:\' or '\' on unix.

适用于所有系统。然后您可以执行以下操作:

some_path = Path(root).joinpath('foo', 'bar')  # C:\foo\bar or \foo\bar on unix.

它不会在控制台中工作,因为使用文件路径.

相关问题