2017-05-25 75 views
3

在Jupyter中,有兩種方法可將筆記本導出爲其他格式,在命令行或庫中使用nbconvert。兩者都要求您將原始筆記本作爲輸入(作爲文件名或JSON數據)。從當前Jupyter筆記本中提取所有單元格數據

我想要做的事實質上是自動的,自包含的報告生成,即使用筆記本內的nbconvert庫,將相同的筆記本導出爲執行時的HTML/PDF。我設想在文檔的最後一個單元格中輸出代碼,並指示忽略導出的最後一個單元格。

我的問題是獲取數據。在筆記本內,我可以通過In[1],Out[2]等訪問代碼單元,但AFAIK沒有降價單元的這種功能。也沒有(官方)方法來獲取筆記本的名稱(沒有__file__屬性)以這種方式傳遞信息。

有很多例子可以從其他筆記本中獲取所有單元格數據 - 但是有沒有辦法從當前筆記本中訪問所有單元格數據?

回答

1

你可以用筆記本文件名和nbconvert來做這件事,就像你猜測的那樣。做一些東西客戶端可能需要擴展,我可以設想一個服務器擴展來做轉換,以及你在最後一個代碼單元中寫入的一些JS,例如渲染一個按鈕,然後將筆記本返回到轉換器服務器擴展。隱藏某些單元格(例如Js單元格),您可以在轉換擴展程序中使用,或者使用單元格元數據和nbconvert模板。鑑於架構的靈活性,有很多方法可以做到這一點

+0

謝謝蒂姆。你是對的,當然,我可以使用nbconvert傳遞文件名。我想我是以我的方式嘗試它(想要訪問單元格數據),以便我能更全面地控制,例如寫入報告的單元格以及報告的名稱和位置。 AFAIK nbconvert路線將要求報告文件具有與筆記本相同的名稱和路徑(並且筆記本要知道自己的名字,這可能會隨着筆記本的傳遞而輕易改變)。 – blackgore

+0

所以我在這種情況下的解決方案是寫一些JavaScript添加元數據到客戶端上的筆記本json(即寫一個文件位置的表單,要保存的單元格等),然後將筆記本json發送到自定義服務器擴展並解析元數據,然後根據需要使用自定義模板/預處理筆記本json將其交給nbconvert。 –

相關問題