我正在将通过命令行运行的 Python 脚本移植到 Python CGI,以便我可以使用 HTML 表单元素控制选项。如何访问命令的结果?
脚本当前运行这些命令:
- svn更新
- rsync 从其他本地文件夹复制图像
- 重新编译 CSS
svn 提交 *循环这些命令十几次
#!/usr/bin/python print 'Content-Type: text/plain' print print 'test...' os.system("svn update /Users/daverau/titles/or_mm_creating_website_3e")
如何访问此命令的控制台输出?有没有更好的方法来设置这种本地作业?
安全性不是问题,这是仅供我自己使用的本地 Mac 工具。
最佳答案
这两个好的答案向您指出了子流程模块。
还有一些围绕这个模块构建的包装器非常值得一看:
1) sh 模块(前 PBS)
[更新] 如果您无法使用 MS Windows,请使用 PBS,否则请使用其后继者 sh module .
使用 sh 模块:
from sh import ifconfig, ls
print(ifconfig("eth0"))
print(ls('-la'))
使用 PBS,来自自述文件 https://github.com/amoffat/pbs :
import pbs
print pbs.ifconfig("eth0")
print pbs.ls('-la')
2) 铅
详细信息请访问http://plumbum.readthedocs.org/en/latest/ .
自述文件中的一些示例:
基本:>>> from plumbum import local, FG, BG
>>> from plumbum.cmd import ls, grep, wc, cat, head
>>> ls
LocalCommand(<LocalPath /bin/ls>)
>>> ls()
u'build.py\ndist\ndocs\nLICENSE\nplumbum\nREADME.rst\nsetup.py\ntests\ntodo.txt\n'
管道:
>>> chain = ls["-a"] | grep["-v", "\\.py"] | wc["-l"]
>>> print chain
/bin/ls -a | /bin/grep -v '\.py' | /usr/bin/wc -l
>>> chain()
u'13\n'
重定向:
>>> ((cat < "setup.py") | head["-n", 4])()
u'#!/usr/bin/env python\nimport os\n\ntry:\n'
>>> (ls["-a"] > "file.list")()
u''
>>> (cat["file.list"] | wc["-l"])()
u'17\n'
关于python cgi + 用于运行批处理命令的网络界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457871/