将grep结果返回到一个变量,在python中执行吗



我想grep模式并将其返回到一个变量,对于多个文件,我知道如何使用bash来实现,但现在我想在python中实现它。

在bash中,我可以做一些类似的事情

for i in {1..3}
do
result=$(grep "pattern" folder/name-${i}/out)
done

然而,我不知道如何在Python中实现它。我试过了:

for i in range(1,4):
name = 'name-' + str(i)
result = subprocess.check_output("grep 'pattern' folder/{name}/out", shell=True)

返回错误grep: folder/{name}/out: No such file or directory

有人知道怎么修吗?

for i in range(1,4):
name='name-'+str(i)
result=subprocess.check_output("grep 'pattern' folder/%s/out" % name, shell=True)

或者在你的命令前加上f:

result = subprocess.check_output(f"grep 'pattern' folder/{name}/out", shell=True)

在字符串之前需要一个f才能使其成为f-string:

for i in range(1, 4):
name = 'name-' + str(i)
result = subprocess.check_output(f"grep 'pattern' folder/{name}/out", shell=True)

或者您可以进行%字符串格式化:

for i in range(1, 4):
name = 'name-' + str(i)
result = subprocess.check_output(f"grep 'pattern' folder/%s/out" % name, shell=True)

您忘记将f放在"grep 'pattern' folder/{name}/out"之前。所以你可以使用:

for i in range(1, 4):
name = 'name-' + str(i)
result = subprocess.check_output(f"grep 'pattern' folder/{name}/out", shell=True)

或者您可以使用str.format():

for i in range(1, 4):
name = 'name-' + str(i)
result = subprocess.check_output("grep 'pattern' folder/{name}/out".format(name=name), shell=True)

最新更新