Django:复制文件只复制一部分

时间:2014-03-01 21:14:58

标签: python django

我有以下方法将directory_path中的所有文件复制到my django model。好吧,这可以按预期工作:将文件复制到模型中使用upload_to定义的位置。但是有一个问题:并非一切都被复制了。只有部分文件。像17.530字节,而不是〜1-2兆字节。 :(这让我很伤心。

def _handle_directory(self, directory_path, directory):
    for fs_name in os.listdir(directory_path):
        fs_path = os.path.join(directory_path, fs_name)
        if os.path.isfile(fs_path):
            path = os.path.join(directory_path, fs_path)
            with open(path, 'r') as f:
                file_wrapper = File(f)
                self.cnt_files += 1
                new_file = FsFile(directory=directory,
                                  filename=fs_name.decode(self.fs_encoding).encode('utf-8'),
                                  file=file_wrapper, uploader=self.uploader)
                new_file.save()

更新1:

我用三个文件运行它:

filename   | orig. size | imported size |  ratio
 foo.pdf   |  70.818    |  1365         |   1,92 %
 bar.html  |   3.355    |  3355         | 100 %
 fiz.zip   |     645    |  135          |  20,93 %

1 个答案:

答案 0 :(得分:0)

好吧,我回答这个问题,因为jensq没有。

我必须将b - 标记添加到open

        with open(path, 'rb') as f:

然后一切都按我预期的方式运作。