【问题标题】:FileUpload ipywidget: how to specify initial directory?FileUpload ipywidget:如何指定初始目录?
【发布时间】:2021-10-26 16:49:02
【问题描述】:

我在 Jupyter 中使用了FileUpload ipywidget,并且想指定起始目录。现在我有这个:

import ipywidgets as widgets
my_widget = widgets.FileUpload(accept='.json', multiple=False)

谷歌搜索并查看源代码后,我没有看到如何指定用户单击小部件时将打开的初始目录。在我们工作中使用的工作站上,事情可能特别复杂,所以如果我可以将其添加为参数,将节省大量时间。

除了使用 ipywidgets 在 Jupyter 中探索目录/加载文件之外,我还愿意接受其他简单的选择,但它通常工作得很好。

如果重要的话,我在 Windows 10 中。

【问题讨论】:

  • 我认为当前的 API 无法做到这一点,这可能是安全相关问题的一部分。除了被传输​​的文件数据,没有其他信息在小部件和用户之间来回传递。
  • @ac24 我注意到的是,在使用过一次之后,下次我使用它时会启动我之前加载文件的目录探索。如果我能弄清楚这是怎么发生的,然后重现它……嗯。
  • 打开了一个关于这个问题的问题,其中一位开发人员同意你的看法,因为它是一个不提供此功能的 html 元素的包装器:github.com/jupyter-widgets/ipywidgets/issues/3305。我将探索ipyfilechooser 这是一种不同类型的小部件,并在我有时间时报告。
  • 您可以做的另一个选择是结合glob 列出预先确定的目录中的本地文件,并使用下拉小部件列出它们。只要人们在本地运行笔记本,这将起作用,显然不会远程工作。
  • @ac24 好主意,如果你确定这是正确的目录(我通常坦率地说)。

标签: jupyter-notebook ipywidgets


【解决方案1】:

无法使用FileUpload 小部件指定起始目录。这已由致力于该主题的 ipywidgets in an issue 的开发人员验证。相反,您可以使用不同的自定义小部件,即 ipyfilechooser 存储库中的 FileChooser 来做您想做的事情。

首先,使用pip install ipyfilechooser 安装。

然后在你的笔记本中:

from ipyfilechooser import FileChooser

starting_directory = 'C:/foo'
chooser = FileChooser(starting_directory)
display(chooser)

查看您最有可能使用的一些属性:

print(chooser.selected_filename)
print(chooser.selected)
print(chooser.selected_path)

存储库中讨论了许多其他选项。

当然,一旦您获得了您关心的文件名的路径(例如,C:/foo/foo.json),那么您将必须找出使用标准库打开文件的最佳方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多