如何在 Python 中使用 subprocess.Popen() 而不是 os.popen()?

How to use subprocess.Popen() instead of os.popen() in Python?

由于 os.popen 已被弃用,我想使用 subprocess.Popen(而且因为它在各个方面都更加强大)。我最初有这个但不知道如何进行适当的转换。

PID_FILE = 'process.pid'
if os.path.exists( PID_FILE ):
    pid = int(open( PID_FILE,'rb').read().rstrip('\n'))
    pinfo = os.popen('ps %i' % pid).read().split('\n')

如有任何帮助,我们将不胜感激。

只需使用 subprocess.Popen 创建一个新进程,将其标准输出以文本模式重定向到 PIPE,然后读取其标准输出。

Python 版本 >= 3.6

from subprocess import Popen, PIPE
with Popen(f'ps {pid}'.split(), stdout=PIPE, text=True) as proc:
    pinfo = proc.stdout.readlines()

正如您所要求的 python2.7,我已经提供了代码。但请记住 python2.7 已停产,您应该使用 python3.x

Python版本=2.7

from subprocess import Popen, PIPE
proc = Popen(f'ps {pid}'.split(), stdout=PIPE)
pinfo = proc.stdout.readlines()

参考subprocess documentation了解更多信息