fbpx

Почему subprocess не работает с кавычками?

297 просмотра
0
0 Комментариев

Хочу через Python выполнить какую-нить команду в командной строке Windows (cmd), к примеру если выполнить tasklist без каких либо параметров, то все нормально работает:

subprocess.call(['tasklist'])

Но если добавить кавычки в параметры, то ничего не работает:

subprocess.call(['tasklist','/fi','"sessionname eq Console"'])

Собственно выполняю такой код:

import subprocess as sp
 
var_command = raw_input('Enter command: ')
 
proc = sp.Popen(var_command.split(),stdout=sp.PIPE,stderr=sp.PIPE)
 
out, error = proc.communicate()
print out

С чем это может быть связно? Причем если кавычек в параметрах нет, то также все нормально работает.


Добавить комментарий

2 Answers

Python Опубликовано 19.01.2019
0

Если args является последовательностью и shell=False (по умолчанию), то subprocess сам экранирует все аргументы. Т.е. в вашем примере будет выполнено:

tasklist /fi "\"sessionname eq Console\""

Subprocess management. Frequently Used Arguments

Converting an argument sequence to a string on Windows

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up