Python 如何在后台使用commands.getoutput启动SimpleHTTPServer

Python 如何在后台使用commands.getoutput启动SimpleHTTPServer,python,python-2.7,simplehttpserver,Python,Python 2.7,Simplehttpserver,我正试图在后台用命令.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 &>

我正试图在后台用
命令.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

有人能帮我弄清楚我是否遗漏了什么吗?

既然您已经标记了Python2.7,为什么还要使用
命令界面?自Python 2.6以来,它一直被弃用,应改用该模块:

import subprocess

subprocess.Popen(["python", "-m", "SimpleHTTPServer", "8080"])
我应该这样做。或者,更好的是,使用
nohup
运行它,因为脚本退出可能会杀死它:

subprocess.Popen(["nohup", "python", "-m", "SimpleHTTPServer", "8080"])
要忽略输出,您可以将
stdout=subprocess.DEVNULL
传递给
subprocess.Popen()
调用(如果您使用的是Python 3.3+),或者您可以自己打开
/dev/null

import os
import subprocess

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

我想在后台启动SimpleHTTPServer。@npatel-上面的程序将在后台运行。我遇到了以下异常:
类型错误:execv()arg 2必须只包含字符串
,看起来
8080
将更改为
“8080”
@npatel-我忘记在初始答案中引用端口号,在我有机会更新它之前,您似乎更快地获取了初始代码。查看最新答案版本。谢谢@zwer。将使用子进程而不是命令。谢谢你指出这一点。