首页 > 解决方案 > 通过 Glob 获取所有虚拟机的路径

问题描述

当我尝试在我的代码中运行与 Windows 框中 VM 的默认位置有关的基本函数时,我遇到了一个问题。这些 VM 存储为单个文件。出于某种原因,与 glob 交互的目录的循环没有找到任何文件。

我必须在路径的开头和路径的结尾使用 glob,以便可以在我的部门周围使用此脚本。

我研究过 os.walk() 和 os.listdir(); 两者都失败了,因为我编写它的方式,我得到了错误TypeError: expected str, bytes or os.PathLike object, not list

我需要一个虚拟机列表,以便我可以编写一个脚本,通过 vix API 克隆该列表中的所有虚拟机。

def getVMs():

    vmloc = glob.glob('**\\Documents\\Virtual Machines\\*.vmdk', recursive=True)

    for f in vmloc:

        print(f)

问题是它打印一个空输出,我不知道为什么。任何帮助,将不胜感激。

编辑:我还尝试通过 os.path 创建路径来完成路径,并创建了 VM 文件夹的完整路径:

def getVMs():
    path = os.path.join('..','C:','\\','Users',os.getlogin(),'Documents','Virtual Machines\\',)
    for vmloc in glob.glob(path +'**.vmdk', recursive=True):

        print(vmloc)

它仍然产生空输出

标签: python-3.x

解决方案


问题在于我让它在我需要的实际目录上方的目录中查找 .vmdk 文件。

    path = os.path.join('..','C:','\\','Users',os.getlogin(),'Documents','Virtual Machines\\',)
    path1 = glob.glob(path + '**\\' + '**.vmdk' , recursive=True )
    for vms in path1:
        print(vms)

之后我能够找到所有的 VMDK 文件


推荐阅读