如何创build一个带有button的网页,在服务于网页的系统上调用各种Python脚本?

我是一个业余爱好者(也是相当新的)程序员,他用python编写了几个有用的脚本来处理各种系统自动化任务,涉及复制,重命名和下载文件以及其他各种各样的活动。

我想创build一个从我的系统提供的网页,只会提供几个button,这将允许我远程启动这些脚本。

问题是,我不知道从哪里开始调查如何做到这一点。 假设我有一个脚本叫:

file_arranger.py

我需要做什么才能让网页执行该脚本? 这并不意味着公共消费,所以任何轻量级的东西都会很棒。 对于奖励积分,我需要研究如何为networking用户提供这些脚本的输出?

编辑:第一个答案让我意识到我忘了包括这是一个Win2k3系统。

Solutions Collecting From Web of "如何创build一个带有button的网页,在服务于网页的系统上调用各种Python脚本?"

python网站上的这个页面有一个很好的描述和例子,你需要做什么来运行一个python CGI脚本。 从最简单的案例开始。 只需制作一个简短的脚本来打印html。

#!/usr/bin/python #on windows change to your path to the python exe print "Content-Type: text/html" # HTML is following print # blank line, end of headers print "<TITLE>CGI script output</TITLE>" print "<H1>This is my first CGI script</H1>" print "Hello, world!" 

当你第一次尝试时,最困难的部分通常是找出脚本的放置位置,以及如何让Web服务器识别并运行它。 如果您正在使用apache web服务器,请查看这些配置步骤 。

一旦你有这个简单的脚本工作,你只需要添加一个HTML表单和按钮标签,并使用动作属性指向你想要运行的脚本。

这个简单的方法除了Python标准库之外不需要任 创建这个目录结构:

 . |-- cgi-bin | `-- script.py |-- index.html `-- server.py 

你把你的脚本放在“cgi-bin”目录中,“index.html”包含“cgi-bin”目录下的脚本链接(所以你不必手动输入),而“server.py包含这个:

 import CGIHTTPserver CGIHTTPserver.test() 

要运行你的服务器,只需运行“server.py”。 就是这样,没有Apache,没有其他的依赖。

HTH …

所有你需要的是把它放在一个被设置为执行CGI脚本的目录中,然后你需要添加

 #!/usr/bin/env python 

到顶部,它应该执行脚本作为一个正常的Python脚本,如果你链接到它。 (就像你会HTML或PHP文件)

这当然,假设你的web服务器被设置为执行CGI,并且你有一个linux系统。

如果你想要一些更有趣的东西,比如mod_python和像Pylons这样的Web框架,还有其他的替代解决方案,但是我认为CGI解决方案更适合你的用例。

[编辑]

在Windows上,如果你有Apache,你应该能够使用相同的方法,但是替换#背后的东西! 与您的python.exe的路径,如下所示:

 #!C:\Python25\python.exe -u 

-u显然需要根据这个链接把Python放到非缓冲模式,这个链接也有更多的深入的信息: http : //www.imladris.com/Scripts/PythonForWindows.html

你应该把CherryPy看作你的HTTP请求处理程序,它可以配置成在一个非常简单的NGINX Web服务器(或Apache,如果你愿意的话)上运行。

然后,您可以将其他脚本导入到在CherryPy上运行的服务中。 这会给你更多的控制权来监视进程并捕获错误。

另一个选择是简单地告诉操作系统使用os.system()来触发命令。 在这里检查一下使用os.system()的不同方法的例子 。

一个简单的cgi脚本(或一组脚本)就是您开始所需的一切。 其他的答案已经涵盖了如何做到这一点,所以我不会重复。 相反,我会强调, 使用纯文本将会给你带来很大的帮助 。 只需输出标题( print("Content-type: text/plain\n")加上print就可以添加自己的换行符给你所需的空白行),然后运行正常的程序。

这样,脚本的任何正常输出都会被发送到浏览器,而不必担心HTML,转义,框架等等。 “做最简单的事情,可能工作。”

这非常适合于像您所描述的非交互式私有管理任务,并且可以让您使用最少的大惊小怪的shell来使用相同的程序。 您的驱动程序,带有按钮的页面可以是一个具有单键形式的静态HTML文件。 甚至是一个链接列表。

要从这里前进,请查看日志记录模块(例如,将INFO消息发送到浏览器而不是命令行,或者使用不同的日志记录程序轻松对消息进行分类,配置处理程序),然后开始考虑模板引擎和框架。

不要输出你自己的HTML, 而是跳过使用现有的许多库中的一个 – 即使花费一些额外的时间来学习库,也可以节省大量的头痛。 或者至少通过有效地编写自己的迷你引擎来封装输出。

如果你知道你的方式Apache 这应该让你开始。

在前面的问题中,我要求将AJAX网站连接到Python的最小实现。 这可能会完成你正在寻找的东西。 它有一个按钮,触发一些Python代码,然后在页面上显示结果。 我的解决方案使用Python中内置的网络服务器,所以它真的是轻量级的(没有额外的软件包甚至Apache)。

设置时, 小心限制对Web服务器执行某些操作的脚本的访问权限。 将它们放在不发布URL的目录中是不够的,因为迟早有人会找到它们。

至少,将这些脚本放在密码保护的位置。 你不希望只有在互联网上的任何人能够运行你的脚本。

如果您现在使用Python 3,则print是一个需要括号的函数。

 #!/Python34/python print ("Content-type: text/html\n") print ("<html><head>") print ("</head><body>") print ("Hello World from Python Script.") print ("</body></html>")