基于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 相关文章推荐
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
详解python-图像处理(映射变换)
Mar 22 Python
python交易记录整合交易类详解
Jul 03 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
用python写PDF转换器的实现
Oct 29 Python
一文读懂python Scrapy爬虫框架
Feb 24 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中const与define的应用区别
2013/06/18 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python获取本机外网ip的方法
2015/04/15 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
大学生个人求职信范文
2013/09/21 职场文书
毕业生就业自荐信
2013/12/04 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
党校毕业心得体会
2014/09/13 职场文书
辞职信如何写
2015/02/27 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
大学校园招聘会感想
2015/08/10 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript