В настоящее время у меня серьезная проблема с скриптом python. Скрипт выполняет произвольные команды с помощью обработчика, чтобы преобразовать неверные отчеты об ошибках в правильные отчеты об ошибках.Проблема подпроцесса Python с амперсандами
Проблема, с которой я столкнулась, - заставить скрипт работать корректно на окнах с командой, содержащей амперсанды на своем пути. Я попытался процитировать команду, избегая амперсанда с помощью ^, и ни одна из них не работает. У меня теперь нет идей. Какие-либо предложения?
Для уточнения от текущих ответов:
- Я использую подпроцесс модуль
- Я передаю командную строку + аргументы в виде списка
- вопрос с путем к самой команде , ни один из аргументов
- Я пробовал процитировать команду. Это приводит к ошибке
[Error 123] The filename, directory name, or volume label syntax is incorrect
- Я не буду использовать не оболочки аргумента (так
shell=false
) - В случае, если это имеет значение, я захватывая трубу в стандартный вывод для обработки, но игнорируя стандартный вывод и стандартный ввод
- Это только для использования в Windows в настоящее время и работает как ожидалось во всех других случаях, которые я тестировал до сих пор.
- Команда, которая является неспособность:
р = subprocess.Popen (прог, STDERR = subprocess.PIPE, BUFSIZE = -1)
, когда первый элемент списка «prog» содержит любые амперсанды. Цитирование этой первой строки не работает.
«Скрипт» означает, что именно? Что работает на окнах? Что не удается в других ОС? Какие еще ОС? – 2008-09-23 12:41:01