OSError:[Errno 2]在Django中使用python子进程时没有这样的文件或目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSError:[Errno 2]在Django中使用python子进程时没有这样的文件或目录相关的知识,希望对你有一定的参考价值。
我试图运行一个程序,使用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)
我可以就如何解决这个问题得到一些相关建议吗?
答案
如果你将一个字符串传递给shell=True
,请使用subprocess.call
。
来自docs:
如果传递单个字符串,则
shell
必须是True
,否则字符串必须简单地命名要执行的程序而不指定任何参数。
subprocess.call(crop, shell=True)
要么:
import shlex
subprocess.call(shlex.split(crop))
以上是关于OSError:[Errno 2]在Django中使用python子进程时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
Django OSError:[Errno 13] 权限被拒绝
Python:OSError:[Errno 2]没有这样的文件或目录:''
用于 Traceroute 并在文件中打印输出的 Python 脚本在 Linux Mint 中显示错误(OSError: [Errno 2] No such file or directory)
OSError:[Errno 98] 地址“hashserve.sock”已在使用中”
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help'] OSError=[Errno 2] 没有这样的文件或目录