在Python erro中使用子进程运行mplayer

在Python erro中使用子进程运行mplayer,python,python-2.7,subprocess,mplayer,Python,Python 2.7,Subprocess,Mplayer,我想使用python运行mplayer,下面是我的代码 from subprocess import call call (mplayer /root/Desktop/file.mp4) 但它不起作用我犯了这个错误 File "two.py", line 8, in <module> call ("mplayer /root/Desktop/file.mp4") File "/usr/lib/python2.7/subprocess.py", line 493, in

我想使用python运行mplayer,下面是我的代码

from subprocess import call 
call (mplayer /root/Desktop/file.mp4)
但它不起作用我犯了这个错误

File "two.py", line 8, in <module>
    call ("mplayer /root/Desktop/file.mp4")
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
    raise child_exception
文件“two.py”,第8行,在
调用(“mplayer/root/Desktop/file.mp4”)
文件“/usr/lib/python2.7/subprocess.py”,第493行,在调用中
返回Popen(*popenargs,**kwargs)。等待()
文件“/usr/lib/python2.7/subprocess.py”,第679行,在__
错误读取,错误写入)
文件“/usr/lib/python2.7/subprocess.py”,第1259行,在执行子进程中
引发子对象异常

我做错了什么?

您需要传递shell=False的参数列表(这是默认值):

或者对于单个字符串,您需要shell=True:


但是不需要后者,第一个可以正常工作。

您需要传递一个参数列表,其中shell=False(默认值):

或者对于单个字符串,您需要shell=True:

但不需要后者,前者可以很好地发挥作用

call(["mplayer", "/root/Desktop/file.mp4"])
call("mplayer /root/Desktop/file.mp4", shell=True)