上传文件的“没有这样的文件或目录”

时间:2014-02-15 16:25:51

标签: python django django-models

我上传时会尝试自动获取视频的屏幕列表。但是当我创建一个Video实例时,我得到了:

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
    )

1 个答案:

答案 0 :(得分:0)

第一个可能的原因

该文件存在,但仍由已创建文件或打开文件的父进程锁定,并锁定此文件(顺便提一下,您使用 subprocess.check_output())。

您应该在对文件采取进一步措施之前解除锁定。

第二个可能的原因

尝试在行中将保存=错误更改为保存=真

self.file.save(self.file.name, self.file, save=False)