Массив нулевого размера для операции редукции fmin, которая не имеет идентичности

Я пытаюсь прочитать xlsx файл, но получаю ValueError массив нулевого размера для операции уменьшения fmin, который не имеет идентичности

views.py

def t(request):
    context = {} 

   if request.method == "POST":
    uploaded_file = request.FILES['document']
    print(uploaded_file)
    if uploaded_file.name.endswith('.xlsx'):
        
        savefile = FileSystemStorage()
        name = savefile.save(uploaded_file.name, uploaded_file) 
        d = os.getcwd() 
        file_directory = d + '\media\\' + name
        readfile(file_directory)
        return redirect(r)
    else:
         messages.warning(request, 'File was not uploaded. Please use xlsx file extension!')

return render(request, 't.html', {})

def read_file(filename):

    my_file = pd.read_excel(filename)
    data = pd.DataFrame(data=my_file)

Примечание: Он правильно читает некоторые файлы

Чтобы избежать ошибки, указанной в комментариях, оберните строку кода символом try/except. Проверьте в логах, какая строка выдает ошибку, я думаю, что это вот эта:

try:
    my_file = pd.read_excel(filename)
except ValueError:
    messages.error(request, "The file has the wrong format.")
    # or whatever error message you want to raise

В идеале, вы хотите выдать ошибку перед сохранением файла. Я бы попробовал прочитать файл с помощью pd перед его сохранением:

# ...
uploaded_file = request.FILES['document']
if uploaded_file.name.endswith('.xlsx'):
    try:
        _read_test = pd.read_excel(uploaded_file)
    except ValueError:
        messages.error(request, "The file has the wrong format.")
        # or whatever error message you want to raise
        return redirect('your-error-or-form-page')

    savefile = FileSystemStorage()
    # ...

Я не уверен, что pd может читать InMemoryFile, но именно в этой строке вы хотите отлавливать неправильные файлы. Возможно, уже есть pypi пакеты для подобных случаев

Вернуться на верх