Python: Когато се опитвате да итерирате изхода на подпроцеса, итерацията е по знак, а не по ред

Опитвам се да се науча на Python 3 по отношение на системното администриране, като правя и проучвам тук на SO.

Намерението на тази функция е да извика външна команда, who -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")

person Ben M.    schedule 10.12.2018    source източник
comment
Когато итерирате върху низ, той итерира през всеки знак. Това е нормално поведение. Можете да използвате .split('\n'), за да създадете списък с редове.   -  person juanpa.arrivillaga    schedule 10.12.2018
comment
Благодаря ти! Това беше. Сега разбирам защо се получи така. Оценявам обяснението.   -  person Ben M.    schedule 10.12.2018


Отговори (1)


Тогава няма да получите никакви отговори! :)
person Bernhard    schedule 10.12.2018