python / dash pd.to_excel не работает в пределах загрузки - PullRequest
0 голосов
/ 14 ноября 2018

Я создал и развернул dash-приложение, в котором есть компонент upload, а в обратном вызове есть def. Def разделяет компонент содержимого содержимого загрузки, затем декодирует его с помощью base64, затем, если загруженный файл является Excel (но он должен работать и с csv, но проблема остается даже с csv), def считывает расшифровывается как это:

df = pd.read_excel(io.BytesIO(decoded))

Это уже содержится в стандартной документации компонента dash upload: https://dash.plot.ly/dash-core-components/upload и до этого момента он отлично работал как на моем локальном хосте, так и на моем развернутом приложении.

Однако , как только я пытаюсь выполнить этот код, он запускается с ошибкой:

xlr = pd.ExcelWriter(file_to / filename) df.to_excel(xlr, 'sheet_name'='sheet1') xlr.save

но он не работает без ExcelWriter, как df.to_excel(file_to / filename, 'sheet1').

Я поставлю весь код ниже:

def parse_contents(contents, filename, date, file_to):
    filename= filename[:].lower()
    content_type, content_string = contents.split(',')
    decoded = base64.b64decode(content_string)
    try:
        if '.csv' in filename:
            df = pd.read_csv(io.StringIO(decoded.decode('utf-8')))
            df.to_csv(file_to / filename, sep=",", encoding='utf8')
        elif '.xlsx' in filename:
            df = pd.read_excel(io.BytesIO(decoded))

(Как я уже говорил, до этого момента все работает нормально, и панды определенно запускаются, в связанном примере есть вывод для помещения строк df в компонент экспериментальной таблицы, а без запуска to_excel в совершенстве). (Я помещаю "/" между file_to и именем файла, поскольку я использую Path () из pathlib для file_to, а приложение развертывается в Ubuntu, поэтому путь читается как PosixPath).

            xlr = pd.ExcelWriter(file_to / filename)
            df.to_excel(xlr, sheet_name="sheet1")
            xlr.save()
    except Exception as e:
        print(e)
        return html.Div([ 'There was an error processing this file.' + filename])
    return html.Div([html.H5(filename), html.H6(datetime.datetime.fromtimestamp(date)), html.Hr(),])

Я протестировал pd.to_excel в отдельном файле, и он также работал нормально, и to_excel также работал на моем локальном хосте (Windows), только в приложении dash, в этом компоненте загрузки, он не работает.

Спасибо за любые предложения, ребята!

...