Python 2.6中没有spawnl函数吗?
我刚发现我以前用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版本里还是存在的。实际上,你的错误信息里就能看到这一点。你的第一个参数看起来是有效的。我建议你检查一下第二个参数,也就是路径。