Python Popen не распознает переключатели командной строки - PullRequest
0 голосов
/ 19 мая 2018

У меня есть скрипт Python со следующими двумя строками кода (а также другими строками), работающими на сервере Linux:

proc = subprocess.Popen(['last', '-F'], stdout=subprocess.PIPE, shell=True)
(output, err) = proc.communicate()

Когда я запускаю last -F из командной строки на сервере(Linux), все отлично.Переключатель -F переводит даты в более стандартизированный формат.(Я полагаю, это означает «полный», поэтому год не пропущен, даже если это текущий год.)

Однако, когда я запускаю свой сценарий, Попен определенно не вызывает -F переключатель.Информация о дате, которую я получаю, определенно не "полная".Кто-нибудь видит, что здесь происходит не так?Возможно, стоит отметить, что я пробовал и shell=True, и shell=False, но опция -F, похоже, не действует в любом случае.

- EDIT -

Тип вывода, который я получаю:

mlecoz   pts/4        10.31.202.4      Sat May 19 13:46   still logged in

Тип вывода, который я хочу (важно для анализа):

mlecoz   pts/4        10.31.202.4      Sat May 19 13:46:34 2018   still logged in

1 Ответ

0 голосов
/ 22 мая 2018

Я понял это.Все, что мне нужно сделать, это удалить последний параметр из вызова:

proc = subprocess.Popen(['last', '-F'], stdout=subprocess.PIPE, shell=True)

, чтобы он был:

proc = subprocess.Popen(['last', '-F'], stdout=subprocess.PIPE)
...