首页 文章

Python:当尝试迭代子进程输出时,迭代是按字符而不是按行进行

提问于
浏览
0

我一直在尝试通过在SO上进行系统管理来自学Python 3 .

此函数的目的是调用外部命令-q,并对输出进行迭代,将每行(用户)包装在HTML标记中(保存最终的总用户行) . 但是,实际输出是包含在HTML标记中的每个字符 .

我无法弄清楚为什么它会迭代每个字符或者如何让它逐行迭代 .

connusers = str(subprocess.check_output("who -q; exit 0", stderr=subprocess.STDOUT, shell=True).decode())

 conntable.write("<ul>\n")
 for conn in connusers:
     if "#" not in conn:
         conntable.write("<li>"+ conn +"</li>\n")
 conntable.write("</ul>\n")

1 回答

  • 1

    欢迎来到stackoverflow,你已经有两条评论解释如何让它工作,只是一个快速的fyi为什么会发生这种情况:

    for循环迭代迭代,在大多数情况下,这是一个列表,它迭代该列表的成员 . 在字符串的情况下,它遍历其字符 . 文本行不会保存在行列表中,而是保存在一个字符串中,并将换行符保存为 \n . 所以对于python connusers 只是一个长字符串,它会迭代它的字符 . 使用 @Rakesh@juanpa.arrivillaga 给出的解决方案,您可以将此长字符串拆分为一个行列表,然后您可以在其中进行迭代 .

相关问题