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

问题描述

我面临的问题是什么-我正在尝试使用 subprocess.popen 从文件路径运行 mp4。

详细信息 - 我最初尝试过: os.system - 它可以工作,但不需要字符串变量。或者我没有正确地将我的变量转换为字符串。我将在下面展示示例图片

subprocess.call - 我无法让它从 vlc 运行 mp4(我必须使用 call,因为我必须使用 python 2.7.18。我知道它是旧的,但我一直坚持这个程序我正在尝试使用它) subprocess.popen - 我能够让 subprocess.popen 打开 vlc 播放器,但我无法使用 vlc 让它运行 mp4。我不确定这是否是一个论证问题,或者我只是没有展示如何正确地写这个。

主要目标 - 我正在尝试制作一个脚本,它会询问我想在我的计算机上搜索什么,然后在我输入我想搜索内容后找到它看到,然后运行它。我正在使用 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 函数将值转换为字符串以供使用。 - 它仍然对我不起作用,或者我做错了。

解决方法

仔细看看这部分:

                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]) 调用每次都执行完全相同的操作。>

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

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

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

subprocess.popen([vlc,music])

此处的文档https://docs.python.org/2.7/library/subprocess.html#popen-constructor