【问题标题】:How to browse to a folder with plotly dash?如何浏览到带有情节破折号的文件夹?
【发布时间】:2019-03-29 13:08:52
【问题描述】:

我正在学习 Python 仪表板。我知道有一个 Dash 核心组件上传允许上传文件。我需要的是加载文件夹中的所有文件。我想知道如何使用核心组件浏览到选定文件夹,然后读取该文件夹中的所有文件。

提前致谢。

【问题讨论】:

  • dash 可能不是您所说的 Dash。你到底在说什么
  • 我说的是来自 Plotly 的 Dash。 dash.plot.ly/dash-core-components
  • 你解决了吗?我正在寻找同样的东西,但对我来说只要找到路径就足够了。
  • 出于安全考虑,我认为我们不能这样做。我只能找到dash的上传工具允许上传单个或多个文件。如果你能找到任何工具,请更新我。
  • 这个问题是关于将文件夹中的所有文件上传到服务器吗?还是只是打开文件夹并读取文件名?

标签: python plotly-dash


【解决方案1】:

您可以使用dash_core_components.Upload 组件并设置multiple=True 来上传多个文件。这是一个示例:https://dash.plotly.com/dash-core-components/upload

但是,这会一次上传所有文件的所有内容。你不能用它来获取一个文件夹的内容,这样你就可以一个一个地上传文件。

但是,由于您的问题关于上传文件夹中的所有文件,所以应该这样做。

【讨论】:

  • 在Windows中,你可以使用“Ctrl+A”来选择文件夹中的所有内容(我相信你可以在Mac上使用“Cmd+A”代替)
【解决方案2】:

可以使用os 内置库来导航托管 Dash 应用程序的服务器内的文件 - 如果您在本地运行,这意味着您的计算机,或者如果您在云上托管,则在 VM 上。

正如 ThangNguyen 所说,无法在客户端浏览文件。因此,如果您的应用托管在云实例上,它将无法读取您用来访问该应用的计算机的文件。

如果您的目标确实是浏览服务器上的文件,那么您可以使用以下代码:

import os

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State

app = dash.Dash(__name__)
server = app.server

folders = ["images", "spreadsheets"]

controls = [
    dcc.Dropdown(
        id="dropdown",
        options=[{"label": x, "value": x} for x in folders],
        value=folders[0],
    )
]

app.layout = html.Div(
    [html.H1("File Browser"), html.Div(controls), html.Div(id="folder-files")]
)


@app.callback(Output("folder-files", "children"), Input("dropdown", "value"))
def list_all_files(folder_name):
    # This is relative, but you should be able
    # able to provide the absolute path too
    file_names = os.listdir(folder_name)

    file_list = html.Ul([html.Li(file) for file in file_names])

    return file_list


if __name__ == "__main__":
    app.run_server(debug=True)

给定一个像这样的文件夹结构:

你应该得到以下应用:

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2022-01-23
    • 2017-09-06
    • 2013-08-04
    • 2021-02-20
    相关资源
    最近更新 更多