以下是我的代码:
execfile("main.py");
url = "localhost:9988";
webbrowser.open_new_tab(url);
“main.py”将启动localhost,但是当我运行脚本时,它不会转到webbrowser.open_new_tab(url),因为它卡在localhost中。
有没有办法启动localhost然后在选定的浏览器(即chrome / firefox)中打开一个新选项卡到localhost?
答案 0 :(得分:3)
由于main.py在请求之前不会退出(因为它是服务器),因此您需要创建一个新进程才能调用webbrowser.open_new_tab
。您可以使用subprocess.Popen
,os.fork
或类似内容。
subprocess.Popen((sys.executable, 'main.py'))
应该可以解决问题。
答案 1 :(得分:3)
使用Popen
执行以下操作。它应该工作。您必须将python -m SimpleHTTPServer 8000
替换为您自己的可执行文件。
<强>代码:强>
import subprocess
import webbrowser
subprocess.Popen(['python', '-m', 'SimpleHTTPServer', '8000'])
webbrowser.open_new_tab('localhost:8000')
<强>执行:强>
[12:21:49] babil@quad:[/tmp]$ python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import subprocess
>>> import webbrowser
>>>
>>> subprocess.Popen(['python', '-m', 'SimpleHTTPServer', '8000'])
<subprocess.Popen object at 0x7f09924df210>
>>> Serving HTTP on 0.0.0.0 port 8000 ...
>>> webbrowser.open_new_tab('localhost:8000')
True
>>> localhost.localdomain - - [20/Mar/2012 12:22:29] "GET / HTTP/1.1" 200 -
Created new window in existing browser session.
localhost.localdomain - - [20/Mar/2012 12:22:29] code 404, message File not found
localhost.localdomain - - [20/Mar/2012 12:22:29] "GET /favicon.ico HTTP/1.1" 404 -
>>>