Есть ли способ передать переменную в подпроцессе? Это не сработало.Переменная в подпроцессе
subprocess.check_output(["cat test.txt | grep %s"], shell=True) %(variable)
Есть ли способ передать переменную в подпроцессе? Это не сработало.Переменная в подпроцессе
subprocess.check_output(["cat test.txt | grep %s"], shell=True) %(variable)
Вы можете использовать str.format
:
"cat test.txt | grep {}".format(variable)
Или, используя старый стиль форматирования поместить переменную непосредственно после.
"cat test.txt | grep %s"%variable
Ваш список также излишний при использовании оболочки = True:
subprocess.check_output("cat fable.txt | grep %s" %variable, shell=True)
Если вы используете список арг без оболочки = True, вы можете использовать Popen:
from subprocess import Popen,PIPE
p1 = Popen(["cat","text.txt"], stdout=PIPE)
p2 = Popen(["grep", variable], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close()
out,err = p2.communicate()
p1.wait()
print(out)
Как это будет работать, если я хочу иметь несколько переменных? – user3270211
несколько переменных будут точно такими же: '' cat test.txt | grep {} {} ". Format (variable, variable2)', то же самое понятие использует «% s», я предпочитаю str.format, поскольку я думаю, что это больше очевидно. –
спасибо, еще один вопрос, если я хочу awk несколько двоеточий команды и поместить в несколько переменных. Есть ли простой способ сделать это вместо запуска подпроцесса для каждого varaible? – user3270211
'' '' '' '' должен идти после строки, в которой он работает. '" cat test.txt | grep% s "% variable'. У вас есть это место справа. – khelwood