В вашем addTodohandler
вы используете this.state.data.push в React, это не будет обновлять состояние
addTodo(val) {
// Assemble data
const todo = {text: val, id: window.id++};
axios.post(this.apiUrl, todo).then(res => {
const newData = {...this.state.data, res.data}
this.setState({data: newData });
});
Перегрузка print
является конструктивной особенностью python 3.0 для обращения к отсутствию способности сделать так в Python 2.x.
Однако можно переопределить sys.stdout. ( пример .) Просто присваивают его другому подобному файлу объекту, который делает то, что Вы хотите.
, С другой стороны, Вы могли просто передать свой сценарий по каналу через команда unix tee
. python yourscript.py | tee output.txt
распечатает и к stdout и к output.txt, но это получит весь вывод.
Хотя Вы не можете заменить print
ключевое слово (в Python 2.x print
, ключевое слово), это - обычная практика для замены sys.stdout
, чтобы сделать что-то подобное print
переопределение; например, с экземпляром StringIO.StringIO
. Это соберет все печатные данные в StringIO
экземпляр, после которого можно управлять им.
В Python 2.x Вы не можете, потому что печать не является функцией, это - оператор. В Python 3 печать является функцией, таким образом, я предполагаю, что это могло быть переопределено (не попробовали его, хотя).
Я столкнулся с той же проблемой.
Как насчет этого:
class writer :
def __init__(self, *writers) :
self.writers = writers
def write(self, text) :
for w in self.writers :
w.write(text)
import sys
saved = sys.stdout
fout = file('out.log', 'w')
sys.stdout = writer(sys.stdout, fout)
print "There you go."
sys.stdout = saved
fout.close()
Это работало как очарование на меня. Это было взято из http://mail.python.org/pipermail/python-list/2003-February/188788.html
Я ответил на тот же вопрос на другой вопрос SO
По сути, самое простое решение - просто перенаправить вывод на stderr, как показано ниже, в файле конфигурации wsgi.
sys.stdout = sys.stderr