【问题标题】:Python - subprocess.popen - play mp4 using it's pathPython - subprocess.popen - 使用它的路径播放 mp4
【发布时间】:2020-12-22 02:20:42
【问题描述】:

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

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

subprocess.call - 我无法让它从 vlc 运行 mp4(我必须使用调用,因为我必须使用 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 函数将值转换为字符串以供使用。 - 它仍然对我不起作用,或者我做错了。

【问题讨论】:

    标签: python subprocess popen


    【解决方案1】:

    仔细看看这部分:

                    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])
    

    【讨论】:

    • 这对我帮助很大!我实际上做过[vlc,音乐],但一开始没有用。我不知道为什么,但后来我查看了 vlc 并意识到它正在查看带有 \ 斜杠而不是 / 斜杠的路径。我将 popen 更改为 ([vlc, music]) 然后使用 C:/ 而不是 C:\ 使用 os.walk 并且它起作用了。非常感谢!
    【解决方案2】:

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

    subprocess.popen([vlc, music])
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2017-10-07
    相关资源
    最近更新 更多