我有一个脚本,它使用这种结构来调用一个内部程序,该程序返回一个用户、一个帐户名、一个状态和一个日期,所有字符串。它返回的内容看起来像这样:
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
并在适当的位置进行过滤。
我现在得到的结果只是一个用户名、一个帐户和日期,因此代码非常简单。