Python 2.6中没有spawnl函数吗?

3 投票
5 回答
3121 浏览
提问于 2025-04-15 16:15

我刚发现我以前用Python 2.5写的代码现在不能用了。顺便说一下,我现在用的是Python 2.6。

>>> os.spawnl(os.P_NOWAIT,"setup.exe")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python26\lib\os.py", line 612, in spawnl
    return spawnv(mode, file, args)
OSError: [Errno 22] Invalid argument
>>>

有人知道这是怎么回事吗?或者有没有可以用的os.spawn*和NOWAIT选项的示例代码。

更新:

即使我在os.spawnl()里写了完整的路径,还是报错。

5 个回答

3

我觉得现在推荐使用 subprocess 这个模块,而不是 os.spawn* 这些函数。(我无法重现你遇到的问题,不过我不是在用Windows系统。)

5

我最后通过添加一个DUMMY参数让它工作了,虽然有点奇怪。

这个不行。

os.spawnl(os.P_NOWAIT,"Setup.exe")

这个也不行。

os.spawnl(os.P_NOWAIT,"Setup.exe","")

但是这个可以。

os.spawnl(os.P_NOWAIT,"Setup.exe","DUMMY")

无论如何,还是谢谢大家。

5

thrope说得对,使用subprocess更好。不过,spawn*相关的东西在2.6版本里还是存在的。实际上,你的错误信息里就能看到这一点。你的第一个参数看起来是有效的。我建议你检查一下第二个参数,也就是路径。

撰写回答