我正在尝试编写一个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”作为变量。
答案 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)