繁体   English   中英

如何在 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 已达到 EOL,您应该使用 python3.x

Python 版本 = 2.7

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

有关更多信息,请参阅子流程文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM