【发布时间】:2020-03-28 20:00:33
【问题描述】:
我有很多 jupyter python 文件 (ipnyb),我怎样才能轻松地在它们上搜索 python 源代码,例如从命令行或 jupyter-notebook 客户端本身?我正在寻找专门用于 jupter 笔记本的东西,而不是普通的 find/grep,因为嵌入式数据“”data”:{ “图像/png”}
【问题讨论】:
标签: python-3.x jupyter-notebook
我有很多 jupyter python 文件 (ipnyb),我怎样才能轻松地在它们上搜索 python 源代码,例如从命令行或 jupyter-notebook 客户端本身?我正在寻找专门用于 jupter 笔记本的东西,而不是普通的 find/grep,因为嵌入式数据“”data”:{ “图像/png”}
【问题讨论】:
标签: python-3.x jupyter-notebook
要在笔记本中搜索,请在命令模式下使用查找+替换快捷方式 F。例如,在 Kaggle 上,Esc 用于命令模式,然后F 用于触发查找。
或者在 Mac 上使用 Cmd+Shift+P 打开命令面板,在 Linux/Win 上使用 Ctrl+Shift+P。然后在里面输入“find”。
至于在 Jupyter 中一次搜索多个笔记本,我没有经验。我建议研究 JupyterLabs 及其扩展,因为它似乎更适合多个笔记本。
在 CLI 中,普通的 grep 可以工作
grep wordtosearch *.ipynb
递归
grep -r --include \*.ipynb wordtosearch mytopdirectory
【讨论】:
此命令允许您执行递归搜索(通过当前目录中的所有目录)
有关此命令的说明,请查看此链接 => explainshell
find . -name '*ipynb' | xargs grep YOUR_SEARCH
【讨论】:
'"mystring"' 而不是'mystring',我的意思是添加引号,这样您就不会在嵌入数据中获得随机关键字
我也想这样做!我找到了一个很好的解决方案,你可以在笔记本中完成。 google groups discussion is here,但万一链接中断,这里是那里提供的代码:
pattern = '../**/*.ipynb'
query = 'text you want to find'
for filepath in glob.iglob(pattern, recursive=True):
with open(filepath) as file:
s = file.read()
if (s.find(query) > -1):
print(filepath)
这将打印所有包含搜索字符串的文件。一个很好的增强是还打印字符串出现的上下文。
【讨论】: