как привести код передаваемый в командную строку к виду понимаемому windows

Пытаюсь найти все установленные на компьютере adb.exe. Есть такой код:

import os
import win32api
from def_search import search


def search(name, path):
    result = None
    if result is None: result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

drives = win32api.GetLogicalDriveStrings().split("\x00")[:-1]

found = None
if found is None: found = []
index = 0
while index <= len(drives) - 1:
    drive = drives.pop(index)
    found.append(search("adb.exe", drive))
    index = index

adb_found = list()
for next_list in found:
    adb_found += next_list

На выходе получаю список с путями формата:

['C:\platform-tools\adb.exe', 'C:\Program Files\platform-tools\adb.exe', 'C:\Xiaomi\XiaomiTool2\res\tools\adb.exe', 'D:\platform-tools\adb.exe', 'E:\platform-tools\adb.exe']

В следующем куске кода я хочу узнать версии установленных adb.exe:

for x in adb_found:
    cmd = x + " " + "version"
    output = os.popen(cmd)
    for line in output:
        if "Version" in line:
            version = []
            version.append(line.strip())
            print(x + " - " + version.pop())

Для этого мне нужно выполнить в командной строке windows код типа:

C:\Program Files\platform-tools\adb.exe version

И натыкаюсь на проблему в windows с пробелами. Винда выполняет без проблем код, если он не содержит пробелов, но код выше он отметает, так как для того чтобы он сработал я его должен привести к виду:

C:\"Program Files\platform-tools\adb.exe" version

Прошу помощи в этой ситуации. Сразу скажу, я даже не юниор, поэтому если вы подскажете как сделать это все оптимальнее, буду весьма признателен.


Ответы (0 шт):