亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

顯示數據框,以便單擊單元格在文件資源管理器(例如 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 關注
  • 278 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號