您的位置:

增加python脚本,Python可以做脚本吗

本文目录一览:

如何创建和使用Python CGI脚本

你是否想使用Python语言创建一个网页,或者处理用户从web表单输入的数据?这些任务可以通过Python CGI(公用网关接口)脚本以及一个Apache web服务器实现。当用户请求一个指定URL或者和网页交互(比如点击””提交”按钮)的时候,CGI脚本就会被web服务器启用。CGI脚本调用执行完毕后,它的输出结果就会被web服务器用来创建显示给用户的网页。配置Apache web服务器,让其能运行CGI脚本在这个教程里,我们假设Apache web服务器已经安装好,并已运行。这篇教程使用的Apache web服务器(版本2.2.15,用于CentOS发行版6.5)运行在本地主机(127.0.0.1),并且监听80端口,如下面的Apache指令指定一样:12ServerName 127.0.0.1:80Listen 80下面举例中的HTML文件存放在web服务器上的/var/www/html目录下,并通过DocumentRoot指令指定(指定网页文件所在目录):1DocumentRoot "/var/www/html"现在尝试请求URL:这将返回web服务器中下面文件的内容:1/var/www/html/page1.html为了启用CGI脚本,我们必须指定CGI脚本在web服务器上的位置,需要用到ScriptAlias指令:1ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"以上指令表明CGI脚本保存在web服务器的/var/www/cgi-bin目录,请求URL里包含/cgi-bin/的将会搜索这个目录下的CGI脚本。我们必须还要明确CGI脚本在/var/www/cgi-bin目录下有执行权限,还要指定CGI脚本的文件扩展名。使用下面的指令:12Options +ExecCGIAddHandler cgi-script .py下面访问URL:这将会调用web服务器中下面所示脚本:1/var/www/cgi-bin/myscript-1.py创建一个CGI脚本在创建一个Python CGI脚本之前,你需要确认你已经安装了Python(这通常是默认安装的,但是安装版本可能会有所不同)。本篇教程使用的脚本是使用Python版本2.6.6编写的。你可以通过下面任意一命令(-V和–version参数将显示所安装Python的版本号)检查Python的版本。Shell12$ python -V$ python --version如果你的Python CGI脚本要用来处理用户输入的数据(从一个web输入表单),那么你将需要导入Python cgi模块。这个模块可以处理用户通过web输入表单输入的数据。你可以在你的脚本中通过下面的语句导入该脚本:Shell1import cgi你也必须修改Python CGI脚本的执行权限,以防止web服务器不能调用。可以通过下面的命令增加执行权限:Shell1# chmod o+x myscript-1.pyPython CGI例子涉及到Python CGI脚本的两个方案将会在下面讲述:使用Python脚本创建一个网页读取并显示用户输入的数据,并且在网页上显示结果注意:Python cgi模块在方案2中是必需的,因为这涉及到用户从web表单输入数据。例子1 :使用Python脚本创建一个网页对于这个方案,我们将通过创建包含一个单一提交按钮的网页/var/www/html/page1.html开始。XHTML123456Test Page 1当”提交”按钮被点击,/var/www/cgi-bin/myscript-1.py脚本将被调用(通过action参数指定)。通过设置方法参数为”get”来指定一个”GET”请求,服务器将会返回指定的网页。/var/www/html/page1.html在浏览器中的显示情况如下:/var/www/cgi-bin/myscript-1.py的内容如下:1234567#!/usr/bin/pythonprint "Content-Type: text/html"print ""print ""print "CGI Script Output"print "This page was generated by a Python CGI script."print ""第一行声明表示这是使用 /usr/bin/python命令运行的Python脚本。”Content-Type: text/html”打印语句是必需的,这是为了让web服务器知道接受自CGI脚本的输出类型。其余的语句用来输出HTML格式的其余网页内容。当”Submit”按钮点击,下面的网页将返回:这个例子的要点是你可以决定哪些信息可以被CGI脚本返回。这可能包括日志文件的内容,当前登陆用户的列表,或者今天的日期。在你处理时拥有所有python库的可能性是无穷无尽的。例子2:读取并显示用户输入的数据,并将结果显示在网页上对于这个方案,我们将通过创建一个含有三个输入域和一个提交按钮的网页/var/www/html/page2.html开始。XHTML123456789Test Page 2当”Submit”按钮点击,/var/www/cgi-bin/myscript-2.py脚本将被执行(通过action参数指定)。/var/www//html/page2.html显示在web浏览器中的图片如下所示(注意,三个输入域已经被填写好了):/var/www/cgi-bin/myscript-2.py的内容如下:Python1234567891011121314#!/usr/bin/pythonimport cgiform = cgi.FieldStorage()print "Content-Type: text/html"print ""print ""print "CGI Script Output"print ""print "The user entered data are:"print "First Name: " + form["firstName"].value + ""print "Last Name: " + form["lastName"].value + ""print "Position: " + form["position"].value + ""print ""print ""正如前面提到,import cgi语句用来确保能够处理用户通过web输入表单输入的数据。web输入表单被封装在一个表单对象中,叫做cgi.FieldStorage对象。一旦开始输出,”Content-Type: text/html”是必需的,因为web服务器需要知道接受自CGI脚本的输出格式。用户输入的数据在包含form[“firstName”].value,form[“lastName”].value,和 form[“position”].value的语句中可以得到。那些中括号中的名称和/var/www/html/page2.html文本输入域中定义的名称参数一致。当网页上的”Submit”按钮被点击,下面的网页将被返回。这个例子的要点就是你可以很容易地读取并显示用户在web表单上输入的数据。除了以字符串的方式处理数据,你也可以用Python将用户输入的数据转化为可用于数值计算的数字。结论本教程演示了如何使用Python CGI脚本创建网页并处理用户在网页表单输入的数据。查阅更多关于Apache CGI脚本的信息,点击这里。查阅更多关于Python cgi模块的信息,点击这里。如何创建和使用Python CGI脚本

关于Python中的一段为Python脚本添加行号脚本

C语言有__LINE__来表示源代码的当前行号,经常在记录日志时使用。Python如何获取源代码的当前行号?

The C Language has the __LINE__ macro, which is wildly used in logging, presenting the current line of the source file. And how to get the current line of a Python source file?

exception输出的函数调用栈就是个典型的应用:

A typical example is the output of function call stack when an exception:

python代码

File "D:\workspace\Python\src\lang\lineno.py", line 19, in module

afunc()

File "D:\workspace\Python\src\lang\lineno.py", line 15, in afunc

errmsg = 1/0

ZeroDivisionError: integer division or modulo by zero

那么我们就从错误栈的输出入手,traceback模块中:

Now that, Let's begin with the output of an exception call stack, in the traceback module:

python代码

def print_stack(f=None, limit=None, file=None):

"""Print a stack trace from its invocation point.

The optional 'f' argument can be used to specify an alternate

stack frame at which to start. The optional 'limit' and 'file'

arguments have the same meaning as for print_exception().

"""

if f is None:

try:

raise ZeroDivisionError

except ZeroDivisionError:

f = sys.exc_info()[2].tb_frame.f_back

print_list(extract_stack(f, limit), file)

def print_list(extracted_list, file=None):

"""Print the list of tuples as returned by extract_tb() or

extract_stack() as a formatted stack trace to the given file."""

if file is None:

file = sys.stderr

for filename, lineno, name, line in extracted_list:

_print(file,

' File "%s", line %d, in %s' % (filename,lineno,name))

if line:

_print(file, ' %s' % line.strip())

traceback模块构造一个ZeroDivisionError,并通过sys模块的exc_info()来获取运行时上下文。我们看到,所有的秘密都在tb_frame中,这是函数调用栈中的一个帧。

traceback constructs an ZeroDivisionError, and then call the exc_info() of the sys module to get runtime context. There, all the secrets hide in the tb_frame, this is a frame of the function call stack.

对,就是这么简单!只要我们能找到调用栈frame对象即可获取到行号!因此,我们可以用同样的方法来达到目的,我们自定义一个lineno函数:

Yes, It's so easy! If only a frame object we get, we can get the line number! So we can have a similar implemetation to get what we want, defining a function named lineno:

python代码

import sys

def lineno():

frame = None

try:

raise ZeroDivisionError

except ZeroDivisionError:

frame = sys.exc_info()[2].tb_frame.f_back

return frame.f_lineno

def afunc():

# if error

print "I have a problem! And here is at Line: %s"%lineno()

是否有更方便的方法获取到frame对象?当然有!

Is there any other way, perhaps more convinient, to get a frame object? Of course YES!

python代码

def afunc():

# if error

print "I have a proble! And here is at Line: %s"%sys._getframe().f_lineno

类似地,通过frame对象,我们还可以获取到当前文件、当前函数等信息,就像C语音的__FILE__与__FUNCTION__一样。其实现方式,留给你们自己去发现。

Thanks to the frame object, similarly, we can also get current file and current function name, just like the __FILE__ and __FUNCTION__ macros in C. Debug the frame object, you will get the solutions.

python3.4的脚本如何用3.9执行

1、打开交互模式:交互模式下执行Python,这种模式下,无需创建脚本文件,直接在Python解释器的交互模式下编写对应的Python语句即可。

2、通过脚本输出通过文本编辑器,编写脚本文件,命名为hello.py,在命令行模式下输入pythonhello.py即可。这种方式,要注意脚本文件所在路径,如果当前工作路径和脚本文件不在同一路径下,则要进入脚本文件所在路径,或者给出脚本文件的完整路径。

3、在脚本文件中指定python程序所在路径,修改文件为可执行文件,然后直接运行文件。