print
оператор будет звонить write()
метод любого объекта, который Вы присваиваете sys.stdout.
я вращал бы небольшой класс записи к двум местам сразу...
import sys
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("log.dat", "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
Теперь print
оператор и отзовется эхом на экран и добавит к Вашему файлу журнала:
# prints "1 2" to <stdout> AND log.dat
print "%d %d" % (1,2)
Это очевидно быстро-и-грязно. Некоторые примечания:
<stdout>
, если Вы не будете регистрироваться на время программы. Они все достаточно просты, что я - удобный отъезд их как упражнения для читателя. Ключевое понимание здесь - то, что print
просто вызовы "подобный файлу объект" это присвоено sys.stdout
.
ошибка была буквально вызвана тем, что не были включены параметры openid.claimed_id
и openid.identity
, которые должны быть установлены в "http://specs.openid.net/auth/ 2.0 / identifier_select "
. С этим набором я получаю еще одну ошибку, которую можно решить, заполнив также openid.realm
,
Вы уже настроили обнаружение RP для своего сайта? Это еще кое-что, что вам нужно сделать, и Google, возможно, уже применяет это.
http://blog.nerdbank.net/2008/06/why-yahoo-says-your-openid-site.html