在Python中通过CGI传递命令行参数

时间:2014-04-11 01:15:21

标签: python-2.7 cgi

OS X 10.7.5,Python 2.7,Firefox 28.0

我有一个HTML表单,可以捕获四个参数。

我有一个Python文件,需要四个命令行参数。

当我点击“提交”时,我想要的是什么?表单上的按钮,用四个参数调用Python文件,就像我在命令行上完成它一样:

vmsmith$ ./file.py arg1 arg2 arg3 arg4

我天真地尝试在<form ... action="./file.py">中引用Python文件,但我有一个Firefox框询问我是否要在Xcode中打开./file.py

我怀疑我必须在中间CGI脚本的某个地方调用./file.py,但我已经在网上搜索过,找不到任何关于如何操作的例子或解释。

在上下文中,我没有运行Apache;相反,我正在运行一个我在这里找到的简单的Python CGI服务器:http://pointlessprogramming.wordpress.com/2011/02/13/python-cgi-tutorial-1/。我用HTML表单运行了一些简单的CGI程序,并验证了服务器,HTML文件和CGI脚本都可以正常工作。

具体来说,给定一个包含四个输入字段的HTML表单,以下CGI脚本可以工作:

#!/usr/local/bin/python

import cgi
import cgitb
cgitb.enable() 

form = cgi.FieldStorage()

val1 = form.getvalue('arg1')
val2 = form.getvalue('arg2')
val3 = form.getvalue('arg3')
val4 = form.getvalue('arg4')

我可以在网页上打印所有四个传递的值,但同样,我们的想法是用它们调用file.py

1 个答案:

答案 0 :(得分:1)

1)file.py可以变成CGI脚本,例如通过将您的CGI脚本代码与file.py的一部分组合起来,该部分使用变量val1 val2 val3和val4。然后<form ... action="./file.py">将起作用,但您将无法以通常的方式在命令行上运行带有参数的file.py.

2)或者,file.py可以保持不变,并从您的CGI脚本中调用,如下所示:

import os
os.system('python file.py' + ' ' + val1 + ' ' + val2 + ' ' + val3 + ' ' + val4)
相关问题