У меня есть код ниже:

def display_keyboard(*_):
    os.system(r'start " " C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe')

Проблема в том, что при запуске этого кода я получаю следующую ошибку:

The system cannot find the file C:\Program.

У меня возникла проблема с обработкой пустых пространств для поиска всего файла

C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe
-1
jon220 17 Дек 2015 в 04:43

4 ответа

Лучший ответ

Использование subprocess.Popen() или subprocess.run() почти всегда лучший выбор, чем os.system().

import subprocess

def display_keyboard(*args):
    return subprocess.Popen(r'C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe')

Некоторые причины включают в себя:

  • Не нужно беспокоиться об экранировании аргументов;
  • Гораздо больший контроль над дочерним процессом, например, над потоками stdout, stderr и stdin;
  • Методы wait() и terminate() и т. Д.
2
Martin Valgur 17 Дек 2015 в 02:04

Пробуем цитаты по пути:

os.system('"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe"')
0
Kevin Guan 17 Дек 2015 в 01:55

Вы должны вместо этого использовать

os.startfile("C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe")

Я думаю

0
Joran Beasley 17 Дек 2015 в 01:48

При запуске команд из командной строки вы должны либо экранировать пробельные символы, либо заключать их в кавычки (я не помню, нужно ли вам использовать двойные кавычки или нет в окнах, это было давно). Это потому, что пробелы рассматриваются как разделители между аргументами. Пытаться

os.system(r'start " " "C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe"')

0
OnGle 17 Дек 2015 в 01:51