os.execl错误的参数split

时间:2018-05-13 20:36:22

标签: python windows subprocess python-3.6

使用自己的解释器,其参数和替换进程重新启动python程序的(略微破坏的)代码是使用os.exec函数之一,例如os.execl

 os.execl(path, arg0, arg1, ...)
 ...
  

这些函数都执行一个新程序,取代当前进程;他们不回来。在Unix上,新的可执行文件被加载到当前进程中,并且将具有与调用者相同的进程ID。错误将报告为OSError异常。

所以我这样做了:

import os,sys

def restart_program():
    """Restarts the current program, with file objects and descriptors
       cleanup
    """
    print("restarting")
    python = sys.executable
    os.execl(python, python, *sys.argv)

restart_program()

我明白了:

C:\Program: can't open file 'Files\Python36\python.exe': [Errno 2] No such file or directory

显然是一个带有空格"该死的路径的情况"。除非它不应该发生,因为我自己并没有编写命令行,而是干净利落地传递了这些论点。

要使其正常工作,因为arg0(通常)被忽略,我会(例如):

os.execl(python, "python.exe", *sys.argv)

现在该程序正在运行。

所以bug或windows版本"功能" ?

0 个答案:

没有答案