Задать вопрос
@ubushan

Как во Flask вывести subprocess?

Ребят подскажите, я чайник в Python и во Flask, только только начинаю, как вывести Subprocess в браузер корректно?
К примеру пишу вот это

from app import app
import subprocess

@app.route('/')
@app.route('/index')

def index():
    user = { 'nickname': 'MyName' }
    p = subprocess.Popen("ping yandex.ru", stdout=subprocess.PIPE,)
    out = p.communicate(str)
    return '''
<html>
  <head>
    <title>MyFirstFlaskPage</title>
  </head>
  <body>
    <h1>Hello, ''' + user['nickname'] + '''</h1>
    <h1>Hello, ''' + out + '''</h1>
  </body>
</html>
'''


Flask запускает сервер, но в браузере он показывает ошибку

builtins.TypeError
TypeError: Can't convert 'tuple' object to str implicitl
y

А если удалить все теги html, то в браузере вывод корректный только всё в одну полосу :(

from app import app
import subprocess

@app.route('/')
@app.route('/index')

def index():
    #user = { 'nickname': 'Ivan' }
    p = subprocess.Popen("ping yandex.ru", stdout=subprocess.PIPE,)
    out = p.communicate(str)
    return out


вывод в браузере в одну строку:
Pinging yandex.ru [5.255.255.55] with 32 bytes of data: Reply from 5.255.255.55: bytes=32 time=2ms TTL=53 Reply from 5.255.255.55: bytes=32 time=2ms TTL=53 Reply from 5.255.255.55: bytes=32 time=2ms TTL=53 Reply from 5.255.255.55: bytes=32 time=2ms TTL=53 Ping statistics for 5.255.255.55: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 2ms, Maximum = 2ms, Average = 2ms

А хочется, чтобы было так же как и в терминале всё красиво по столбцам.

1-й вопрос в первом примере, что не правильно?
2-й вопрос как вывести корректный структурированный вывод?


Спасибо!
  • Вопрос задан
  • 697 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@EugenKozlov

Hello, ''' + user['nickname'] + '''
Hello, ''' + str(out) + '''
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы