设为首页 收藏本站
查看: 1129|回复: 0

[经验分享] Python ----脚本CGI、特点、应用、开发环境

[复制链接]

尚未签到

发表于 2018-8-14 11:03:41 | 显示全部楼层 |阅读模式
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配置文件,如下所示:
/1、<Directory"/var/www/cgi-bin">/2、Allow Override None  /3、Options ExecCGI
  /4、Order allow,deny
/5、Allow from all/6、</Directory>/7、<Directory"/var/www/cgi-bin">/8、Options All/9、</Directory>程序
  使用Python创建第一个CGI程序,文件名为hello.py,文件位于/var/www/cgi-bin目录中,内容如下,修改文件的权限为755:
1、#!/usr/bin/env python  2、print("Content-type:text/html\r\n\r\n")
  3、print("</html>")print("<html>")
4、print("<head>")5、print("")6、print("</head>")  7、print("<body>")
  8、print("<h2>Hello World! This is my first CGI program")
9、print("</body>")  10、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程序中发挥了重要的作用:

  以下是一个简单的CGI脚本输出CGI的环境变量:
1,#!/usr/bin/python2,import os3,print"Content-type:text/html\r\n\r\n"4,print"Environment"5,for param in os.environ.keys():6,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标签中,要获取其中的信息可以用正则式。
  有需要了解关于Python的技术性问题的详细的朋友可关注
  愿意了解更多的可关注:mingli.com
  朋友需要请加球球:二零四二八四九二三七
开发环境
  ●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>  ●DrPython

  ●PyScripter:使用Delphi开发的轻量级的开源Python>  ●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>  ●Sublime
  ●ipython
  另外,诸如Notepad++、EditPlus、UltraEdit等通用的程序员文本编辑器软件也能对Python代码编辑提供一定的支持,比如代码自动着色、注释快捷键等,但是否够得上集成开发环境的水平,尚有待评估。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551563-1-1.html 上篇帖子: Python学习记录-socket编程 下篇帖子: Python中的运算符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表