当使用os.system
打开文件时,例如:os.system(r'C:/foo.txt')
,当前Python进程,当然,等待系统调用返回。 (即:文本编辑器关闭)。
我必须使用线程来使其异步吗?
想象一下以下情况:
我正在使用 Python 编写 Windows 文件管理器。用户单击一个文件。现在使用os.system(the_path_to_the_file_clicked)
将使用注册表中设置的默认程序打开文件。
使用线程使系统调用异步可以很好地工作,但是当用户关闭文件管理器时怎么办? Python 进程将一直保持事件状态,直到线程退出,但这不是不必要的吗?另一方面,终止 Python 进程也会终止线程,程序将关闭。
有没有办法使用系统调用来打开一个独立于Python进程的新进程?
最佳答案
如果您想使用默认程序在 Windows 上打开文件,有一个特殊的函数可以独立于您自己的程序异步打开它:os.startfile 。这应该可以满足您的要求。
更一般地,对于异步运行程序,os.system
无法做到这一点。然而,the subprocess module能。 subprocess 模块几乎可以完成 os.system 所做的所有事情,甚至更多。但是,与 os.system 一样,当您使用 subprocess.Popen 时,该程序不会独立于您的进程而打开 - 当您的进程终止时,子进程也会终止。
关于python - 使用os.system异步,独立于python进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180857/