У меня сейчас серьезная проблема со скриптом Python. Скрипт запускает произвольные команды через обработчик для преобразования неверных отчетов об ошибках в правильные отчеты об ошибках.
Проблема, с которой я столкнулся, заключается в том, чтобы заставить скрипт правильно работать в Windows с помощью команды, которая содержит амперсанды в своем пути. Я пытался процитировать команду, экранируя амперсанд с помощью ^, и ни один из них не работает. У меня сейчас нет идей. Есть предложения?
Чтобы уточнить из текущих ответов:
- Я использую модуль подпроцесса
- Я передаю командную строку + аргументы в виде списка
- Проблема связана с путем к самой команде, а не с любым из аргументов
- Я пытался процитировать команду. Это вызывает
[Error 123] The filename, directory name, or volume label syntax is incorrect
ошибка
- Я не использую аргумент оболочки (поэтому
shell=false
)
- В случае, если это имеет значение, я беру канал в stderr для его обработки, но игнорирую stdout и stdin
- В настоящее время он используется только в Windows и работает, как и ожидалось, во всех других случаях, которые я тестировал до сих пор.
- Сбой команды:
p = subprocess.Popen (prog, stderr = subprocess.PIPE, bufsize = -1)
, когда первый элемент списка 'prog' содержит амперсанды. Процитирование этой первой строки не работает.