Пример 15.26. PP4E\Internet\Web\cgi-bin\languages-src.py
#!/usr/bin/python
"Отображает содержимое сценария languages.py не выполняя его."
import cgi
filename = ‘cgi-bin/languages.py’
print(‘Content-type: text/html\n’) # обернуть в разметку HTML print(‘<TITLE>Languages</TITLE>’)
print("<H1>Source code: ‘%s'</H1>" % filename)
print(‘<HR><PRE>’)
print(cgi.escape(open(filename).read())) # декодирование выполняется
print(‘</PRE><HR>’) # с применением кодировки по умолчанию
Для нашего веб-сервера, выполняющегося в Windows, путь к файлу filename откладывается относительно каталога сервера (смотрите предыдущее обсуждение этой темы и удалите часть cgi-bin пути при опробовании примера на других платформах). Если запустить этот сценарий из Веб, щелкнув в примере 15.17 на первой гиперссылке из числа ведущих к исходным программным кодам или введя адрес URL вручную, то сценарий отправит клиенту ответ, содержащий текст файла с исходным программным кодом сценария CGI. Он показан на рис. 15.27.
Рис. 15.27. Страница просмотра исходного программного кода
Обратите внимание, что здесь также решающим обстоятельством является экранирование текста файла с помощью функции cgi.escape, потому что он встраивается в разметку HTML ответа. Если этого не сделать, все символы текста, имеющие какое-либо специальное значение в HTML, будут интерпретированы как теги HTML. Например, символ оператора C++ < в тексте этого файла может привести к странным результатам, если не экранировать его надлежащим образом. Функция cgi.escape превратит его в стандартную последовательность <, которая может быть безопасно встроена в разметку HTML.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011