如何用划线浏览到文件夹?
问题描述
我正在学习Python Dashboard。我知道有一个Dash核心组件Upload允许上传一个文件。我需要的是加载文件夹中的所有文件。我想知道如何使用核心组件浏览到选定的文件夹,然后读取该文件夹中的所有文件。
提前谢谢。
解决方案
可以使用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)
给定如下文件夹结构:
您应该获得以下应用程序:
相关文章