Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文件没有缓冲区接口_Python_Django - Fatal编程技术网

Python 文件没有缓冲区接口

Python 文件没有缓冲区接口,python,django,Python,Django,我的views.py中有一个函数。是这样的 from django.core.files.uploadedfile import SimpleUploadedFile def get_file(self, url): # pdb.set_trace() result = urllib.urlretrieve(url) fi = open(result[0]) fi_name = os.path.basename(url) suf = SimpleUploa

我的views.py中有一个函数。是这样的

from django.core.files.uploadedfile import SimpleUploadedFile
def get_file(self, url):
    # pdb.set_trace()
    result = urllib.urlretrieve(url)
    fi = open(result[0])
    fi_name = os.path.basename(url)
    suf = SimpleUploadedFile(fi_name, fi)
    return suf
在创建SimpleUploadedFile对象时,我得到的错误是

TypeError: file doesnot have buffer interface
我尝试将开放模式更改为“rb”。但仍然会得到相同的错误 Plz help me out

需要实际的文件内容,而不是文件对象。因此,您可以像这样修复代码:

suf = SimpleUploadedFile(fi_name, fi.read())
我必须说,虽然我不知道为什么要使用urlretrieve,它将内容保存到一个本地临时文件中,然后您必须打开并读取该文件。最好使用
urlopen
并直接传递:

result = urllib.urlopen(url)
fi_name = os.path.basename(url)
suf = SimpleUploadedFile(fi_name, result.read())
需要实际的文件内容,而不是文件对象。因此,您可以像这样修复代码:

suf = SimpleUploadedFile(fi_name, fi.read())
我必须说,虽然我不知道为什么要使用urlretrieve,它将内容保存到一个本地临时文件中,然后您必须打开并读取该文件。最好使用
urlopen
并直接传递:

result = urllib.urlopen(url)
fi_name = os.path.basename(url)
suf = SimpleUploadedFile(fi_name, result.read())

这个问题发生在可怕的El Capitan号上。 在套接字层上转换为memoryview()时,似乎将unicode作为HTTP内容传递会破坏内容。
只需将所有内容作为普通字符串传递就可以解决我的问题。

在请求库中可怕的El Capitan上有这个问题。 在套接字层上转换为memoryview()时,似乎将unicode作为HTTP内容传递会破坏内容。 把所有的东西都传递给我,就像普通的绳子为我固定一样