OSError:在Django中使用pythonsubprocess时没有这样的文件或目录
我试图运行一个程序,使用subprocess.call()在python代码中进行一些系统调用…其中抛出以下错误,回溯
Traceback (most recent call last): File "<console>", line 1, in <module> 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 1249, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
我的实际Python代码如下,
url = "/media/videos/3cf02324-43e5-4996-bbdf-6377df448ae4.mp4" real_path = "/home/chanceapp/webapps/chanceapp/chanceapp"+url fake_crop_path = "/home/chanceapp/webapps/chanceapp/chanceapp/fake1"+url fake_rotate_path = "/home/chanceapp/webapps/chanceapp.chanceapp/fake2"+url crop = "ffmpeg -i %s -vf "%(real_path)+"crop=400:400:0:0 "+ "-strict -2 %s"%(fake_crop_path) rotate = "ffmpeg -i %s -vf "%(fake_crop_path)+"transpose=1 "+"%s"%(fake_rotate_path) move_rotated = "mv"+" %s"%(fake_rotate_path)+" %s"%(real_path) delete_cropped = "rm "+"%s"%(fake_crop_path) #system calls: subprocess.call(crop)
我可以得到一些有关如何解决这个问题的build议。
如果将string传递给subprocess.call
请使用shell=True
。
从文档 :
如果传递一个string,那么
shell
必须为True
,否则string必须简单地命名要执行的程序,而不指定任何参数。
subprocess.call(crop, shell=True)
要么:
import shlex subprocess.call(shlex.split(crop))