LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2557|回复: 1

请教:Python的 os.spawnl 为什么无法传递参数给被调用的程序呢?[已解决]

[复制链接]
发表于 2009-6-23 09:15:31 | 显示全部楼层 |阅读模式
我想使用下面的这几行代码来启动 Thunderbird 程序。直接在 cmd 下可以 打开 TB,也可以 使用 -profilemanager 参数打开 配置管理器,但是在这个脚本中却只能 打开 TB程序,无法打开 配置管理器。

是不是这几行代码哪里写的有问题?或者有其它的方法吗?

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-

  3. '''Start the Thunderbird mail client.'''

  4. import sys, os

  5. tb_path = r'D:\Program Files\Mozilla Thunderbird'
  6. tb_prog = "%s\\thunderbird.exe" % tb_path

  7. if len(sys.argv) > 1 and sys.argv[1] == '-profilemanager':
  8.     os.spawnl(os.P_NOWAIT, tb_prog, "-profilemanager")
  9. else:
  10.     os.startfile(tb_prog)
复制代码


PS:这个Windows下的问题,在这儿问,合适不?
 楼主| 发表于 2009-6-24 19:47:47 | 显示全部楼层

使用 subprocess 模块解决

找到答案了 :flash:

后面我使用 os.popen 函数调用另外一个 进程,捕不到输出,文档中有提到 subprocess 模块更好用。
  1. if len(sys.argv) > 1 and sys.argv[1] == '-profilemanager':
  2.     pid_tb = subp.Popen("%s %s" % (TB_PROG, sys.argv[1]), shell=False).pid
  3. else:
  4.     os.startfile(TB_PROG)
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表