Подпроцесс с переменной, содержащей пробел (путь) - PullRequest
1 голос
/ 19 февраля 2020

Только что снова начал Python, и теперь я уже застрял на следующем ...

Я пытаюсь использовать подпроцесс. Открыть с переменной с пробелом в ней (Windows путь).

Делая печать в переменной, переменная, кажется, работает нормально. Но при использовании переменной в subprocess.Popen переменная обрезается первым пробелом.

Ниже части скрипта (переменная 'image_file' содержит Windows Path (s) с пробелами)

def start_phone(image_file):
    cmd = tar_exe + " -tf "+ image_file
    print (cmd)
    subprocess.Popen(cmd, shell=True)

Как использовать подпроцесс с переменной, в которой есть пробелы (путь)?

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Вы можете поместить двойные кавычки вокруг каждого аргумента с потенциальными пробелами в нем:

cmd = f'"{tar_exe}" -tf "{image_file}"'
subprocess.Popen(cmd, shell=True)

или не использовать shell=True и вместо этого поместить аргументы в список:

subprocess.Popen([tar_exe, '-tf', image_file])
1 голос
/ 19 февраля 2020

Если вы посмотрите документацию подпроцесса , вы увидите, что для команд подпроцесса должны быть предоставлены аргументы в виде списка, поэтому пример кода должен выглядеть как

def start_phone(image_file):
    subprocess.Popen([tar_exe, "-tf", image_file])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...