什么更快,通过子进程调用使用 grep 或直接在 Python 中过滤字符串?

问题描述 投票:0回答:0

我有一个脚本,它使用这种结构来调用一个内部程序,该程序返回一个用户、一个帐户名、一个状态和一个日期,所有字符串。它返回的内容看起来像这样:

userfind -m system1 --users --dates | grep foo
foo                   bar      bat 2023-11-10

如果没有 grep,它只会以相同的格式返回一个长列表(几千行)。

我通过以下方式在 Python 脚本内部使用它:

com1 = subprocess.Popen(['userfind', '-m', 'system1', '--users', '--dates'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
com2 = subprocess.Popen(['grep', '-m', '1', str(User)], stdin=com1.stdout, stdout=PIPE)  

# some slicing and dicing of the result

正如我评论的那样,这很有效。但我想知道是否有任何优势摆脱对 subprocess.Popen 的第二次调用,只需抓住

com1
并在适当的位置进行过滤。

我现在得到的结果只是一个用户名、一个帐户和日期,因此代码非常简单。

python bash subprocess
© www.soinside.com 2019 - 2024. All rights reserved.