【问题标题】:Passing command line arguments via CGI in Python在 Python 中通过 CGI 传递命令行参数
【发布时间】:2014-06-06 21:33:43
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 cgi


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2012-11-27
      相关资源
      最近更新 更多