如何使用commands.getOutput在后台启动SimpleHttpserver



我试图用commands.getoutput在背景中启动SimpleHTTPServer,但无法做到。

commands.getoutput("python -m SimpleHTTPServer 8080 &> /dev/null &")
(Pdb++) n
sh: -c: line 0: syntax error near unexpected token `;'
sh: -c: line 0: `{ python -m SimpleHTTPServer 8080 &> /dev/null &; } 2>&1'

当我在Linux提示上执行相同的内容时,它正常工作:

bash-4.2$ python -m SimpleHTTPServer 8080 &> /dev/null &
[2] 28460
bash-4.2$ ps -ef | grep SimpleHTTPServer
x  27624 22693  0 16:54 pts/16   00:00:00 python -m SimpleHTTPServer 8080

有人可以帮助我弄清楚我在这里是否缺少什么?

鉴于您已标记为Python 2.7,为什么仍在使用commands接口?自Python 2.6和subprocess模块以来,它已被弃用:

import subprocess
subprocess.Popen(["python", "-m", "SimpleHTTPServer", "8080"])

应该这样做。或者,更好的是,使用nohup运行它,因为您的脚本退出可能会杀死它:

subprocess.Popen(["nohup", "python", "-m", "SimpleHTTPServer", "8080"])

,如果您使用Python 3.3 ,则可以忽略输出,可以将stdout=subprocess.DEVNULL传递给subprocess.Popen()调用,也可以自己打开/dev/null

import os
import subprocess
with open(os.devnull, 'w') as t:
    subprocess.Popen(["nohup","python","-m","SimpleHTTPServer","8080"], stdout=t, stderr=t)

相关内容

  • 没有找到相关文章

最新更新