jdb*_*org 14 python subprocess
所以我试图按照用户指南的建议从os.popen转移到subprocess.popen.我遇到的唯一麻烦是我似乎无法找到使readlines()工作的方法.
所以我曾经能做到
list = os.popen('ls -l').readlines()
Run Code Online (Sandbox Code Playgroud)
但我不能这样做
list = subprocess.Popen(['ls','-l']).readlines()
Run Code Online (Sandbox Code Playgroud)
Fre*_*Foo 32
ls = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE)
out = ls.stdout.readlines()
Run Code Online (Sandbox Code Playgroud)
或者,如果你想逐行阅读(可能其他过程比其他过程更密集ls):
for ln in ls.stdout:
# whatever
Run Code Online (Sandbox Code Playgroud)
agf*_*agf 26
用subprocess.Popen,用于communicate读写数据:
out, err = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE).communicate()
Run Code Online (Sandbox Code Playgroud)
那么你可以随时从拆分的过程串stdout用splitlines().
out = out.splitlines()
Run Code Online (Sandbox Code Playgroud)
jfs*_*jfs 11
lines = subprocess.check_output(['ls', '-l']).splitlines()
Run Code Online (Sandbox Code Playgroud)