Python 上传文件“目录中无此类文件”
我尝试在上传视频时自动获取视频的屏幕列表。但当我创建视频实例时,我得到:Python 上传文件“目录中无此类文件”,python,django,django-models,Python,Django,Django Models,我尝试在上传视频时自动获取视频的屏幕列表。但当我创建视频实例时,我得到: OSError at /admin/videos/video/add/ [Errno 2] No such file or directory 我不明白为什么会出现这个错误,因为文件在那里 以下是模型: class Video(models.Model): file = models.FileField(upload_to='videos/videos') screenlist = models.Imag
OSError at /admin/videos/video/add/
[Errno 2] No such file or directory
我不明白为什么会出现这个错误,因为文件在那里
以下是模型:
class Video(models.Model):
file = models.FileField(upload_to='videos/videos')
screenlist = models.ImageField(upload_to='videos/screenlists', editable=False)
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
if self.pk is None:
self.file.save(self.file.name, self.file, save=False)
screenlist_path = get_screenlist(self.file.path.encode('utf-8'))
self.screenlist = File(open(screenlist_path))
video_info = get_video_info(self.file)
self.duration = get_duration(video_info)
super(Video, self).save(force_insert, force_update, using, update_fields)
下面是发生异常的get_screenlist方法中的字符串:
info = subprocess.check_output([
'ffprobe', '-loglevel', 'error', '-show_format',
'-show_streams', path, '-print_format', 'json'],
stderr=subprocess.STDOUT
)
第一个可能的原因
该文件已存在,但仍被已创建或打开该文件的父进程锁定,并且锁定了该文件。请使用subprocess.check_输出
在对文件执行进一步操作之前,应该释放锁
第二个可能的原因
尝试将行中的save=False更改为save=True:
self.file.save(self.file.name, self.file, save=False)
你能找出找不到的确切目录吗?路径变量?是的,当我在django shell not inside save方法中为函数get_screenlist使用相同的路径时,一切正常。输出路径变量的值。可能不正确。哪个函数引发了该异常?@AndreyNelubin,get_screenlist,该异常是在我调用ffprobe的行中引发的,这是个问题。save=True是故意存在的。如果没有它,它将递归地调用自身,并且它将永远不会停止将文件副本上载到媒体目录。关于锁,我不能说什么,我会考虑的,谢谢。@DmitryMikhaylov无论如何,在延迟任务中调用外部实用程序更好。以芹菜为例。我敢肯定,如果你使用延迟任务来处理类似的事情,你不会有这样的问题。