Получение пользовательского ввода для os.system - PullRequest
0 голосов
/ 27 февраля 2020

Только недавно начал изучать Python, поэтому, пожалуйста, извините за вопрос noob (возможно, я делаю это совершенно неправильно)

Я пытаюсь получить пользовательский ввод для использования с os.system

import os
account = input("Account name: ")
os.system("op get item + account + | awk -F':' '{print $24}' | cut -d '}' -f 1")

эта строка кода используется для получения и отображения информации из 1Password и вывода только пароля Facebook. Этот пример работает, но как только я пытаюсь добавить переменную, она ломается

op get item Facebook | awk -F':' '{print $24}' | cut -d '}' -f 1

Я надеюсь, что кто-то здесь может помочь мне или указать мне правильное направление, спасибо!

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Я думаю, что вам нужно работать с выводом этих команд, поэтому вы можете использовать вместо этого модуль подпроцесса: Замена конвейера оболочки

Например:

from subprocess import check_output

check_output(f"op get item {account} | awk -F':' '{{print $24}}' | cut -d '}}' -f 1", shell=True)

Имейте в виду, что вы хотите очистить переменную учетной записи, прежде чем касаться системных вызовов. :)

0 голосов
/ 27 февраля 2020

Вам просто нужно заменить строку, например, Python3 .6 + элегантный

os.system(f"op get item {account} | awk -F':'" + " '{print $24}' | cut -d '}' -f 1")
...