【问题标题】:Starting VLC stops the rest of a python script启动 VLC 会停止 python 脚本的其余部分
【发布时间】:2019-07-30 22:35:45
【问题描述】:

我正在尝试使用不同的 python 脚本来运行视频,我遇到了一个奇怪的错误,每当我启动 vlc 时,脚本的其余部分都会停止执行。

我做错了什么?

import time
import subprocess

subprocess.call(["vlc", "myVideo.mp4", "-f", "-L", "--no-audio", "&"])

print("I never print")

time.sleep(5)
subprocess.call(["killall", "-9", "vlc"])
print("I never print either!")

【问题讨论】:

  • 检查 subprocess.call 是立即返回还是等待被调用进程结束。可能是它等待进程退出然后返回。
  • 几乎,但不是 100% 重复:stackoverflow.com/q/29464145/2988730
  • @naaz。当然是后者 :) 我没有像骗子一样关闭,因为 OP 尝试使用 &
  • @MadPhysicist 成功了,如果你想添加 subprocess.Popen() 作为正确答案,我很高兴给你一个闪亮的绿色检查。
  • 虽然没有明确禁止,但在 Python 中将分号放在行尾会适得其反。

标签: python linux python-3.x vlc


【解决方案1】:

传递给subprocess 函数的列表被解释为程序的argv。由于shell=False 默认情况下,不会对参数进行解释。具体来说,& 作为最后一个参数传递给vlc,并且不会启动后台进程。

要启动后台进程,请直接调用Popencall 会一直等待子进程完成,所以这不是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多