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无论如何,在延迟任务中调用外部实用程序更好。以芹菜为例。我敢肯定,如果你使用延迟任务来处理类似的事情,你不会有这样的问题。