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。将使用子进程而不是命令。谢谢你指出这一点。