基于Python_脚本CGI、特点、应用、开发环境(详解)


Posted in Python onMay 23, 2017

CGI

CGI 目前由NCSA维护,NCSA定义CGI如下:

CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。

CGI程序可以是Python脚本、Perl脚本、Shell脚本、C或者C++程序等。

服务器

在你进行CGI编程前,确保您的Web服务器支持CGI及已经配置了CGI的处理程序。

所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录。这个目录被称为CGI目录,并按照惯例,它被命名为/var/www/cgi-bin目录。

CGI文件的扩展名为.cgi,python也可以使用.py扩展名。

默认情况下,Linux服务器配置运行的cgi-bin目录中为/var/www。

如果想指定的其他运行CGI脚本的目录,可以修改httpd.conf配置文件,如下所示:

<Directory"/var/www/cgi-bin">
Allow Override None
Options ExecCGI

Order allow,deny

Allow from all
</Directory>
<Directory"/var/www/cgi-bin">
Options All
</Directory>

程序

使用Python创建第一个CGI程序,文件名为hello.py,文件位于/var/www/cgi-bin目录中,内容如下,修改文件的权限为755:

#!/usr/bin/env python
print("Content-type:text/html\r\n\r\n")

print("</html>") print("<html>")

print("<head>")
print("")
print("</head>")
print("<body>")

print("<h2>Hello World! This is my first CGI program")

print("</body>")
print("</html>")

以上程序在浏览器访问显示结果如下:

1、 Hello World! This is my first CGI program

这个的hello.py脚本是一个简单的Python脚本,脚本第一的输出内容"Content-type:text/html\r\n\r\n"发送到浏览器并告知浏览器显示的内容类型为"text/html"。

环境变量

所有的CGI程序都接收以下的环境变量,这些变量在CGI程序中发挥了重要的作用:

基于Python_脚本CGI、特点、应用、开发环境(详解)

以下是一个简单的CGI脚本输出CGI的环境变量:

#!/usr/bin/python
import os
print"Content-type:text/html\r\n\r\n"
print"Environment"
for param in os.environ.keys():
print"%20s:%s<\br>" %(param,os.environ[param])

特点

优点

简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

易学:Python极其容易上手,因为Python有极其简单的说明文档 。

速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。

免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。

解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。

运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。

在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。

缺点

单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。

独特的语法

这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。

运行速度慢:这里是指与C和C++相比。

应用

系统编程:提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具 。

图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。

数学处理:NumPy扩展提供大量与许多标准数学库的接口。

文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。

数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。

网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。

Web编程:应用的开发语言,支持最新的XML技术。

多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆(memories off)风格的AVG游戏,故命名为PYMO。

黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。

用Python写简单爬虫

首先,要通过urllib2这个Module获得对应的HTML源码。

1,import urllib2 #调用urllib2

2,url='http://www.baidu.com/s?wd=cloga' #把等号右边的网址赋值给url

3,html=urllib2.urlopen(url).read() #html随意取名 等号后面的动作是打开源代码页面,并阅读

4,print html #打印

可以看到url的信息存储在span标签中,要获取其中的信息可以用正则式。

开发环境

●IDLE:Python内置IDE (随python安装包提供)

●PyCharm :详见百度百科PyCharm,由著名的JetBrains公司开发,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工 具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

●Komodo和Komodo Edit:后者是前者的免费精简版

●Spyder:安装Anaconda自带的高级IDE

●PythonWin:ActivePython或pywin32均提供该IDE,仅适用于Windows

●SPE(Stani's Python Editor):功能较多的自由软件,基于wxPython

●Ulipad:功能较全的自由软件,基于wxPython;作者是中国Python高手limodou

●WingIDE:可能是功能最全的IDE,但不是自由软件(教育用户和开源用户可以申请免费key)

●Eric:基于PyQt的自由软件,功能强大。全名是:The Eric Python IDE

●DrPython

●PyScripter:使用Delphi开发的轻量级的开源Python IDE, 支持Python2.6和3.0。

●PyPE:一个开源的跨平台的PythonIDE。

●bpython: 类Unix操作系统下使用curses库开发的轻量级的Python解释器。语法提示功能。

●eclipse + pydev插件:方便调试程序

●emacs:自带python支持,自动补全、refactor等功能需要插件支持

●Vim: 最新7.3版编译时可以加入python支持,提供python代码自动提示支持

●Visual Studio 2003 + VisualPython:仅适用Windows,已停止维护,功能较差

●SlickEdit

●Visual Studio 2010 + Python Tools for Visual Studio

●TextMate

●Netbeans IDE

●Sublime

●ipython

另外,诸如Notepad++、EditPlus、UltraEdit等通用的程序员文本编辑器软件也能对Python代码编辑提供一定的支持,比如代码自动着色、注释快捷键等,但是否够得上集成开发环境的水平,尚有待评估。

以上这篇基于Python_脚本CGI、特点、应用、开发环境(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
python缩进区别分析
Feb 15 Python
Python实现的检测网站挂马程序
Nov 30 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
Jan 20 Python
python将字典内容存入mysql实例代码
Jan 18 Python
浅析python中的迭代与迭代对象
Oct 08 Python
Laravel+Dingo/Api 自定义响应的实现
Feb 17 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
python 实现的车牌识别项目
Jan 25 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 #Python
Python常用内置模块之xml模块(详解)
May 23 #Python
Python使用PyCrypto实现AES加密功能示例
May 22 #Python
django+js+ajax实现刷新页面的方法
May 22 #Python
Python正则表达式经典入门教程
May 22 #Python
Python AES加密模块用法分析
May 22 #Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 #Python
You might like
php中的时间显示
2007/01/18 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
javascript 写类方式之一
2009/07/05 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
使用python Django做网页
2013/11/04 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
python剪切视频与合并视频的实现
2020/03/03 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
青年志愿者先进事迹
2014/05/06 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
艺术节开幕词
2015/01/28 职场文书
乐山大佛导游词
2015/02/02 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript