如何在 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了解更多信息
由于 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了解更多信息