Форум сайта python.su
Начал осваивать питон для создания веб-приложений. Написал простенький код:
import sys, os
sys.stdout.buffer.write(b'Content-type: text/html;charset=utf-8\n\n')
os.dup2(1, 2)
print('Hello')
Traceback (most recent call last):
File "Z:\home\pythonweb\www\main.py", line 2, in <module>
sys.stdout.buffer.write(b'Content-type: text/html;charset=utf-8\n\n')
AttributeError: buffer
Офлайн
print 'Content-type: text/html;charset=utf-8'
print 'Hello'
Офлайн
bwХотелось бы хотя бы узнать, к чему такая ненависть к этой штуке. Консультировался с одним товарищем, у него работает прекрасно. На третьей версии, угу.
А что там за хрень такая, buffer? Убрать к едрене фене!
bwТочно.
А точно CGI нужно?
Офлайн
> к чему такая ненависть к этой штуке
Ну тут пусть ещё умные дядьки подойдут и поправят меня. Но дело примерно так обстоит; sys.stdout обязан реализовывать файлоподобный объект, в данном случае (выход, т.е. запись) это методы: write, и опционально flush и close (в виде заглушек?); заглушек, потому что клиентский код не должен их использовать (по нормальному). sys.stdout может быть заменён своим объектом, если он выполняет это требование (файлоподобие). buffer это какая-то особенность реализации, не являющаяся стандартом (?) и значит надежды на неё никакой, от среды к среде и от версии к версии среды, эта штука не только может появляться/исчезать, но и смысл и механизм её работы может меняться.
В данном случае, в одной среде эта штука есть и почему-то работает, а вот в IDLE её нет (а с какой собственно).
Так что предлагаю вырвать глаз тому кто посоветовал обращаться к нестандартным плюшкам некой среды (некой реализации sys.stdout).
p.s. Если не устраивает print, делаем через sys.stdout.write; print один хрен всё в этот stdout посылает.
..bw
Офлайн
bwТам далее все ‘?’ заменить на ‘!’ и все норм.
Ну тут пусть …
Офлайн