Выполните command.getoutput с переменной - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь выполнить команду в Python, и я даю этой команде переменную

commands.getoutput("cat '" +dir_log+ "'")

dir_log - переменная, но python не получает ее как переменную.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

в Python 2, попробуйте:

command='cat {}'.format(dir_log)
commands.getoutput(command)

в Python 3, модуль команд устарел, а subprocess.getoutput эквивалентен commands.getoutput, попробуйте:

command='cat {}'.format(dir_log)
subprocess.getoutput([command])
0 голосов
/ 17 мая 2018

Из официальных документов :

устарело с версии 2.6: модуль commands удален в Python 3. Использованиемодуль subprocess.

Итак, если вы не используете Python 2.5 или более раннюю версию, в чем я сомневаюсь, используйте subprocess*Модуль 1019 *:

import subprocess

dir_log = "/path/to/file"
output = subprocess.check_output(["cat", dir_log])

Модуль subprocess будет обрабатывать экранирование и цепочку аргументов для вас.

Остается только один вопрос - что вы имеете в виду под "но python не получает его как переменную" ?Если dir_log доступно в локальном контексте, его значение будет передано cat.

Нет смысла вызывать cat как подпроцесс, когда вы можете просто загрузить содержимое в Python напрямую, tho:

with open(dir_log, "r") as f:
    file_contents = f.read()
...