Я создаю программу python, которая вызывает ряд других программ и скриптов (в Unix (SUNos) + Linux). Я использую подпроцесс везде, кроме 1 скрипта.Выполнение команды w/quotes in parameters работает с командами command.getoutput(), но не подпроцессом
Сценарий, для которого я не использую подпроцесс, представляет собой Perl-скрипт, который был превращен в исполняемый файл. Как-то это не позволяет мне использовать подпроцесс, но он работает с пакетом (устаревшим) команд. Я хотел бы понять, почему он не работает с подпроцессом (другими словами: что я делаю неправильно ;-))
(Что действительно важная команда perl не имеет значения, но она возвращает полное имя и адрес электронной почты пользователь как результат)
Что я пробовал:
PERL_CMD = [ '<executable perl-script>', '-rt', '"users"', '-eq', '"name"' '"<user_name>", '-fs', '":"', '-fld', '"fullname"', '"email"' ]
full_name, email = subprocess.check_output(PERL_CMD).split(':')
Но это не работает.
Где вариант команды делает работу:
PERL_CMD = '<executable perl-script> -rt "users" -eq "name" "<user_name>" -fs ":" -fld "full_name" "email"'
full_name, email = commands.getoutput(PERL_CMD).split(':')
Кто-нибудь идея, почему я не могу получить подпроцесс работать?
Меня раздражает, что я могу заставить его работать на все, кроме этого (хотя у меня есть приемлемое (но устаревшее) обходное решение).
Что делает «Но это не работает». работа означает? Вы получаете исключение? Если да, то какой? –
@Mike: Я давно запускал версию подпроцесса, поэтому больше не знаю точное исключение, но оно дало исключение. Ответ, данный Чарльзом Даффи ниже, объясняет мне, почему это происходит неправильно, поэтому я теперь знаю причину. Thanx в любом случае для ответа – Nemelis