Python子进程readlines()?

2022-01-18 00:00:00 python subprocess

问题描述

所以我正在尝试按照用户指南的建议从 os.popen 转移到 subprocess.popen.我遇到的唯一麻烦是我似乎找不到使 readlines() 工作的方法.

So I'm trying to move away from os.popen to subprocess.popen as recommended by the user guide. The only trouble I'm having is I can't seem to find a way of making readlines() work.

原来我能做到

list = os.popen('ls -l').readlines()

但我做不到

list = subprocess.Popen(['ls','-l']).readlines()


解决方案

配合subprocess.Popen,使用communicate读写数据:

out, err = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE).communicate() 

然后,您始终可以使用 splitlines() 从进程的 stdout 中拆分字符串.

Then you can always split the string from the processes' stdout with splitlines().

out = out.splitlines()

相关文章