我一直在努力自学python3的系统管理,在这里我做了很多研究
这个函数的目的是调用一个外部命令who-q,并迭代输出,将每一行(用户)包装成HTML标记(保存为最终的total users行)。但是,实际输出是用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")
欢迎使用stackoverflow,您已经收到了两条说明如何让它工作的评论,请简要说明为什么会发生这种情况:
for循环迭代一个iterable,在大多数情况下这是一个列表,它迭代该列表的成员。在字符串的情况下,它迭代它的字符。文本的行不会保存在行列表中,而是保存在一个字符串中,换行符保存为
\n
。所以对于python来说connusers
只是一个长字符串,它将遍历它的字符。使用@Rakesh和@juanpa.arrivillaga给出的解决方案,您可以将这个长字符串拆分为一个行列表,然后可以对其进行迭代相关问题 更多 >
编程相关推荐