我一直在尝试通过在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 回答
欢迎来到stackoverflow,你已经有两条评论解释如何让它工作,只是一个快速的fyi为什么会发生这种情况:
for循环迭代迭代,在大多数情况下,这是一个列表,它迭代该列表的成员 . 在字符串的情况下,它遍历其字符 . 文本行不会保存在行列表中,而是保存在一个字符串中,并将换行符保存为
\n
. 所以对于pythonconnusers
只是一个长字符串,它会迭代它的字符 . 使用 @Rakesh 和 @juanpa.arrivillaga 给出的解决方案,您可以将此长字符串拆分为一个行列表,然后您可以在其中进行迭代 .