Python - subprocess.popen - 使用它的路径播放 mp4

Python - subprocess.popen - play mp4 using it's path

我面临的问题是什么- 我正在尝试使用 subprocess.popen.

从文件路径 运行 一个 mp4

详情-我原来试过: os.system - 它有效,但它不接受字符串变量。或者我没有将我的变量正确转换为字符串。我将在下面展示示例图片。

subprocess.call - 我无法从 vlc 将其传输到 运行 mp4(我必须使用 call,因为我必须使用 python 2.7.18。我知道它旧的,但我坚持使用它来尝试使用它的程序) subprocess.popen - 我能够 subprocess.popen 打开 vlc 播放器,但我无法使用 vlc 将其制作成 运行 mp4。我不确定这是否是一个参数问题,或者我只是没有展示如何正确编写它。

主要目标 - 我正在尝试制作一个脚本,它询问我想在我的计算机上搜索什么,然后在我输入我想搜索的内容之后找到它看到的第一件事,然后 运行s 它。我正在使用 os.walk 在我的搜索中找到第一个文件,我可以打印它,但我无法从它找到的路径值执行。

我当前的代码:

import os
import subprocess
def find(name):
    for root, dirs, files in os.walk('C:/Users/RKerrigan/Videos/w\', followlinks=True):
        for file in files:
            if name in file:
                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(root,file))
                print(music)
                subprocess.popen([vlc])
                return
    print("Finish")
try:
    s=raw_input("name: ")
    find(s)
except Exception as e:
    print(e)
    print("Error")

图片问题-

我在一个非常简单的脚本中尝试 subprocess.popen 看看我是否可以 运行 来自文件路径的 mp4

我尝试 subprocess.popen 在一个非常简单的脚本中,但使用变量作为文件路径。 VLC 将打开,但不会打开 mp4。只有基础程序。

我正在尝试 subprocess.popen 在我正在处理的完整脚本中。我正在使用 os.walk 找到它可以找到的第一个文件,然后我试图打印它并 运行 它找到的实际文件。但是只有 VLC 打开,没有文件。

我正在尝试 os.system 在我正在处理的完整脚本中。我喜欢 os.system,因为当我将字符串放入文件路径时它会起作用。它将 运行 和 mp4 没问题,但是当我尝试使用 os.walk 获取我搜索的值并将其用作文件路径时,它不会执行。此外,它不会像 subprocess.popen 那样给出错误。

我尝试 os.system 但尝试 str 函数将值转换为字符串以供使用。 - 它仍然对我不起作用,或者我做错了。

您需要将第二个参数传递给 popen

subprocess.popen([vlc, music])

这里有文档https://docs.python.org/2.7/library/subprocess.html#popen-constructor

仔细看这部分:

                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(root,file))
                print(music)
                subprocess.popen([vlc])

在循环的每次迭代中,您将相同的字符串分配给 vlc 变量 'C:/Program Files/VideoLAN/VLC/vlc.exe',从而使 subprocess.popen([vlc]) 调用每次都执行完全相同的操作。

合乎逻辑的做法是使用发现的路径,music,在popen()调用中:

                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(root,file))
                print(music)
                subprocess.popen([vlc, music])