con*_*sch 5 python browser if-statement
我正在制作一个小型Python程序,它调用webbrowser模块打开一个URL.打开URL非常有效.
我的问题是,一旦达到这行代码,问题就没有响应.如何使程序继续执行此代码并继续执行?在有问题的行下面是有问题的行,在上下文中:
if viewinbrowser == "y":
print "I can definitely do that. Loading URL now!"
webbrowser.open_new(url)
print "Exiting..."
sys.exit()
Run Code Online (Sandbox Code Playgroud)
程序没有达到执行的程度print "Exiting...",我添加了,因为我注意到程序由于某种原因没有离开if语句.
我正在从命令行运行该程序,以防这很重要.编辑:我在Kubuntu 9.04 i386上运行,使用KDE 4.3通过backports.我使用Firefox 3.5作为我的默认浏览器,在KDE的系统设置中声明,并由程序正确调用.(至少,在Firefox中打开一个带有所需URL的新选项卡 - 我相信这是所需的功能.)/编辑
此外,我认为这个问题几乎可以在任何外部调用中发生,但我对Python很新,并且不知道要在此站点上搜索的术语.(搜索"python webbrowser"没有产生任何帮助.)所以,如果已经在不同的标题下讨论过,我道歉!
有什么建议?
这看起来取决于您正在运行的平台.
我猜你是在Windows上,正如另一位评论家提到的那样没有分叉.我也猜测webbrowser模块在内部使用fork,这就是为什么它在Windows上不适合你的原因.如果是这样,那么使用线程模块创建一个打开webbrowser的新线程可能是最简单的解决方案:
>>> import webbrowser
>>> import threading
>>> x=lambda: webbrowser.open_new('http://scompt.com')
>>> t=threading.Thread(target=x)
>>> t.start()
Run Code Online (Sandbox Code Playgroud)
这里最简单的事情可能就是分叉。不幸的是,我很确定这在 Windows 中不起作用,因为我认为它们的进程模型可能与类 Unix 操作系统不同。不过,这个过程将是相似的。
import os
import sys
pid = os.fork()
if pid:
# we are the parent, continue on
print("This runs in a separate process from the else clause.")
else:
# child runs browser then quits.
webbrowser.open_new(url)
print("Exiting...")
sys.exit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |