Python for 循环子进程。Popen() 和 os.system() 我得到 TypeError: 'int' 对象不是可迭代的



说我已经写了波纹管:

import os
import subprocess
 for i in os.system('ls'):
    print i

我有以下错误:

 Traceback (most recent call last):
 File "<console>", line 1, in <module>
 TypeError: 'int' object is not iterable

当我尝试使用subproces.popen

做同样的事情时
 for i in subprocess.Popen("ls" , shell=True).wait():
    print i

我也有同样的问题。如果我只做os.system('ls'(或subprocess.popen(" ls",shell = true(.wait((

  db.sqlite3  ip  manage.py  mysite  
  0

输出后出现的额外" 0"给出了问题。有什么方法可以摆脱它?

os.system()返回返回值(如果成功的话,0(。

出于明显的原因,您无法在整数上迭代,因此您必须获取数据。

您想获取输出的字符串,解析并迭代其上方。subprocess.check_output()功能应该是您的路。

如果您想要stdout:

proc = subprocess.Popen("ls", shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    print(line)

相关内容

最新更新