我正在尝试使用SimpleHTTPServer
在后台启动commands.getoutput
,但无法执行此操作。
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
有人可以帮我弄清楚我在这里遗失了什么吗?
答案 0 :(得分:1)
鉴于您已经标记了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)