使用 subprocess 通过管道执行外部命令
使用 subprocess 模块时,可能需要使用管道来连接一个外部命令的输出作为输入到另一个。为此,您可以在 subprocess.check_output() 函数中使用 shell=True 参数。
但是,出于安全考虑,在使用 shell=True 时务必谨慎。相反,建议为每个命令创建单独的进程并相应地通过管道传输输出。
要进一步详细说明,请考虑以下示例:
ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE) output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout) ps.wait()
在这种情况下, ps 命令是执行,其输出通过管道传输到 grep 命令中。 grep 的输出结果将存储在“output”变量中。
或者,如果不需要 shell=True,您可以使用 str.find 来获得相同的结果:
output = subprocess.check_output(('ps', '-A')) process_found = 'process_name' in output
以上是如何在 Python 的'subprocess”模块中有效地通过管道传输外部命令输出?的详细内容。更多信息请关注PHP中文网其他相关文章!