将文件传递给 xlrd.open_workbook()



我正在尝试使用 xlrd.open_workbook(( 打开文件,但收到错误:

expected str, bytes or os.PathLike object, not InMemoryUploadedFile

这是我的代码:

def upload(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_file(request.FILES['file'])
def handle_file(f):
book = xlrd.open_workbook(f)

传递文件的正确方法是什么?

更新

找到解决方案:

book = xlrd.open_workbook(file_contents=f.read())

您需要传递路径,而不是文件。

要访问上传文件的路径,我通常执行以下操作:

uploaded_file = request.FILES["file"]
fs = FileSystemStorage()
name = fs.save(uploaded_file.name, uploaded_file)
path = fs.path(name)

像这样导入文件系统存储

from django.core.files.storage import FileSystemStorage

您可以删除该文件,以防您不需要它,这样

fs.delete(name)

希望有帮助。


最新更新