2015-10-06 8 views
1

При поиске учебника по передаче переменных и вывода между сценариями Python я не смог найти ни одного примера, который работал бы с WSGI-сервером в моем примере.Запустить сценарий Python из другого и передать переменные и выходные данные

Я хочу вывод (и переменные), возвращенный в HTML вместо того, чтобы видеть его только в консоли.

Лучшее решение для вызова скрипта python из другого найденного - подпроцесс, но я все еще не вижу объединенного вывода Script 1 и Script 2 из своего веб-браузера и только в консоли.

Сценарий 1:

#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 

from cgi import escape 
import sys, os 
from flup.server.fcgi import WSGIServer 
import subprocess 

def app(environ, start_response): 
    start_response('200 OK', [('Content-Type', 'text/html')]) 

    yield '<h1>Test - Python pass output and variables</h1>' 
    yield '<p>Script 1</p>' 
    yield subprocess.check_output(["python", "script2.py"]) 

WSGIServer(app).run() 

Сценарий 2:

#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 

print "<p>Script 2</p>"; 
+0

Я не думаю, что это хорошая идея, чтобы вызвать некоторые скрипты с веб-сервера. Время загрузки может увеличиться, поэтому никто не будет ждать загрузки содержимого. – ForceBru

+0

Сценарий вызывается после загрузки страницы. Он находится в стадии шаблона, единственной целью будет обработка ввода из формы. –

ответ

1

Если вы хотите передать переменные между скриптами в питона, сделать что-то вроде этого:

Script1.py:

def passVars(): 
    variable = "bla" 
    return variable 

Script2.py:

import Script1 as sc1 

var = sc1.passVars() 
+0

Работает нормально, когда я запускаю его как автономный скрипт, но не внутри метода приложения в WSGIServer. –

+0

это может работать: создать текстовый файл в каталоге сценария и: script1.py: f = open ("./ a.txt", "w") f.write (variable) /////// appmethod.py : f = open ("./ a.txt", "r") var = f.read() – Radagast

+0

В конце он работал при запуске примера кода, но я принимаю ваши оба решения. –