如何在运行子进程后立即终止Python脚本?

时间:2018-07-05 19:39:09

标签: python python-3.x subprocess

我制作了一个脚本,可以使用subprocess.run()播放视频文件。

import subprocess

DATA_DIR = 'path\\to\\video\\files'
MEDIA_PLAYER = 'path\\to\\my\\media-player'

# returns path of random video file
p = chooseOne(DATA_DIR)
print('playing {}'.format(p))

# runs chosen path
subprocess.run([MEDIA_PLAYER, p])

但是我想在打开子子进程后立即终止运行此代码的python脚本。

这可能吗?如果没有,是否还有其他方法可以使用Python打开外部进程以允许脚本终止?

注意:我正在使用Python v3.6

1 个答案:

答案 0 :(得分:2)

请勿使用subprocess.run;请改用os.execl。这样一来,您的媒体播放器就会在当前进程中替换您的Python代码,而不是开始一个新进程。

os.execl(MEDIA_PLAYER, p)

subprocess.run有效地执行了相同的操作,但首先进行派生,以便暂时有两个进程运行您的Python脚本;在一种情况下,subprocess.run返回而没有做任何其他事情来允许您的脚本继续。在另一种方法中,它立即使用os.exec*函数之一(有8种不同的函数)来执行媒体播放器。对于您而言,您只希望第一个进程退出,因此省去了分叉的工作,只需立即使用os.execl