问题描述
我面临的问题是什么-我正在尝试使用 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