subprocess的使用疑惑

subprocess的使用疑惑

先说我的环境:
windows xp
python 2.5.2.2

疑问:
1,subprocess调用外部程序的时候,不能直接传入执行程序所在目录。下面的子句在我的系统上不能运行。
subprocess.Popen(["C:\Program Files\Mozilla Firefox\firefox.exe",'http://hi.baidu.com/redhatlinux10'])
2,当我把"C:\Program Files\Mozilla Firefox\firefox.exe"加入系统环境变量的PATH路径中后,下面的子句是可以运行的。
subprocess.Popen(["firefox",'http://hi.baidu.com/redhatlinux10'])
但是这里问题又出来了。哪个最终用户会,甚至是懂得修改PATH路径呢?
3,python应该是能操作注册表的吧,或许我可以从这条途径突击。
4,好像只要是我在命令提示符下不能运行的程序,subprocess就不能运行。
试试subprocess.Popen(["C:\\Program Files\\Mozilla Firefox\\firefox.exe",'http://hi.baidu.com/redhatlinux10'])
看看是不是转义字符的问题。
转义之后是可以正常运行了。
看样子我还得通过注册表查看firefox安装在哪里才行。
如果只是调用默认浏览器的话,使用
import webbrowser
webbrowser.open(url)

就可以了,如果非要用火狐,那就只能找注册表了……


QUOTE:
原帖由 jjj137 于 2008-8-23 23:38 发表
如果只是调用默认浏览器的话,使用
import webbrowser
webbrowser.open(url)
就可以了,如果非要用火狐,那就只能找注册表了……

webbrowser 在 linux下也能使用吗?
ps:早先怎么就没有人告诉我这个这么便捷的工具呢?

应该是通用的吧……没有试过……
你可以看一下源码。


QUOTE:
原帖由 jjj137 于 2008-8-23 23:53 发表
应该是通用的吧……没有试过……
你可以看一下源码。

刚才看了一下webbrowser的文档,是通用的。
windows 下有很多目录带空格,用 popen 的时候会产生问题。

webbrowser 模块在 linux 下可用。