Найти - Пользователи
Полная версия: изменить тип данных
Начало » Python для новичков » изменить тип данных
1
Hider
проблемма: надо выполнить команду и отправить вывод клиенту приконнекченному к серверу, делаю так
x = os.system("ls")
sock.send(x)

TypeError: send() argument 1 must be string or read-only buffer, not int
придумал делать так
f = file("/tmp/cmd", "w")
f.write(str("ls"))
f.close()
os.popen("bash /tmp/cmd > /tmp/out")
f = file("/tmp/out", "r")
outbuff = f.read()
sock.send(outbuff)
но ето крайне неудобно, нужно както преобразовать содержимое переменной чтоб оно могло отправится.
shiza
не знаю даже что и сказать…
shiza
функция os.system() возвращает “exit status of the process ” (см. документацию).
А тебе надо получить вывод (stdout).
Это можно сделать с помощью модуля subprocess.
Например так:
import subprocess
...

x = subprocess.Popen('ls', shell = True, stdout = subprocess.PIPE).communicate()[0]

sock.send(x)
Hider
точно, спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB