为了账号安全,请及时绑定邮箱和手机立即绑定

显示数据框,以便单击单元格在文件资源管理器(例如 Windows 资源管理器)中打开文件

显示数据框,以便单击单元格在文件资源管理器(例如 Windows 资源管理器)中打开文件

largeQ 2023-05-23 10:37:09
有没有办法在 Jupyter 笔记本中显示数据框,以便单击单元格在给定目录中打开 Windows 资源管理器(或任何其他本机资源管理器)?我试过def make_clickable(url):    return f'<a href="{url}" target="_blank">{url}</a>'df = pd.DataFrame({'dir': '.'}, index=[0])styled = df.style.format({'dir': make_clickable})display(styled)df = pd.DataFrame({'dir': 'file:///C:/'}, index=[0])styled = df.style.format({'dir': make_clickable})display(styled)前者打开一个新的浏览器选项卡,其中显示了 Jupyter 树(在正确的相对位置,如果我.用另一个相对路径替换)。后者什么都不做。如果我右键单击在新选项卡中打开,它会显示about blank#blocked,如果我将其复制并粘贴到新选项卡地址行,它会显示浏览器内置资源管理器,而不是 Windows 资源管理器。我尝试替换_blank为_explorer.exe,但这对任一变体都没有任何改变。因此,这两种选择都远非我想要的。(我知道,安全......但是,这是一个完全离线设置的内部工具)我知道以某种方式可以从浏览器打开资源管理器,因为我只能os.startfile在 Jupyter 单元格中使用,所以我在想也许有一种方法可以在单击数据框的单元格时执行任意代码?也许这需要某种小部件?当然,我总是可以编写一个完整的 Python GUI,但我真的不想这样做。
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

我有点晚了,但我终于想通了。出于安全原因,Javascript 本身无法打开文件资源管理器。然而,javascript 可以在 Jupyter notebook() 中执行 python 代码,python 可以使用(等)Jupyter.notebook.kernel.execute打开 Windows 资源管理器。os.startfile('.')subprocess.run


下面是代码。linux 一个按预期工作正常,但随着 windows 资源管理器打开但不会进入用户焦点,它还会显示图标后面的橙色蜂鸣声表明它应该没问题。


import pandas as pd

import os

import subprocess


windowsv1 = """ 

<p onclick="Jupyter.notebook.kernel.execute(`os.startfile('C:\\Users')`)">File Explorer.</p>

"""

windowsv2 = """ 

<p onclick="Jupyter.notebook.kernel.execute(`subprocess.run(['explorer', 'C:\\Users'])`)">File Explorer.</p>

"""


linux = """ 

<p onclick="Jupyter.notebook.kernel.execute(`subprocess.call([opener, r'/home/equinox'])`)">File Explorer.</p>

"""


def make_clickable(url):

    return windowsv2


df = pd.DataFrame({'dir': '.'}, index=[0])

styled = df.style.format({'dir': make_clickable})

display(styled)


查看完整回答
反对 回复 2023-05-23
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我对此不是 100%,但我认为这将取决于您使用的浏览器。此外,我认为大多数浏览器都会阻止这种行为,并且不允许网页链接打开您的文件浏览器。

如果我错了,请有人纠正我。

如果您安装 Chrome 浏览器扩展程序,则可以执行此操作。只需点击以下链接。在您的代码对我有用之后。

  1. 向下滚动到标题“从 Chrome 打开任何本地文件”。

  2. 按照所有步骤

  3. 安装浏览器扩展(和额外的安装文件)后不要忘记重新启动 Chrome


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信