执行位于Jupyter Notebook上的.ipynb文件的隐藏文件夹中的python脚本(.py)



由于安全原因,我在Jupyter Notebook环境(JupyterHub/JupyterLab)中有一个隐藏文件夹内的python脚本。但是,我想在笔记本单元格中执行它。

我遇到了这篇文章如何从一个* .IPYNB文件在Jupyter笔记本上执行* .PY文件?

并尝试同样的魔术函数

%run -i 'script.py'

但是显示没有找到文件或目录。是否有一种方法来执行隐藏的python文件从代码单元?

您仍然需要使用文件的路径。
假设隐藏是唯一的安全措施,您仍然可以使用%run。假设您的脚本my_script.py位于一个名为hidden_dir的隐藏目录中,该目录与您的笔记本文件位于同一目录中。这是您的命令:

%run './.hidden_dir/my_script.py'

记住,在计算%run语句的路径时,您总是可以在笔记本的单元格中使用ls来测试并查看它实际可以看到和访问的内容。在本例中,在笔记本的单元格中运行以下命令应该列出脚本my_script.py:

ls .hidden_dir -lah

您只需首先在笔记本单元格中使用ls -lah来查看目录,包括隐藏的目录。将结果与ls -lh进行比较,因为在ls -lh中,如果没有-a选项,隐藏目录将不会显示。

注意,除非您想在笔记本名称空间中运行脚本,否则它只是%run 'path/to/script/<name_of_script>'。你没有说你是否需要这个选项,所以我在我的例子中省略了它来进一步简化。如果你想在笔记本中设置一些选项,或者想在运行后在笔记本中访问脚本中创建的对象,请添加-i选项。

与排序路径相关,在单元格中使用cd有一个常见的"问题"。如果需要在笔记本本身的命名空间内更改工作目录,则使用%cd魔术(此处有文档说明),而不是!cd或同等魔术。!cd或同等的内容仅在由感叹号触发的shell实例中更改目录off。这行代码完成后,临时shell就消失了,因此您没有对笔记本做任何事情。您总是可以通过在笔记本单元格中运行以下命令来检查笔记本中的当前工作目录:

pwd

加在一起,ls(和变体ls -lah),%cd, &pwd让您探索Jupyter笔记本可以访问的内容,并在Jupyter笔记本中找出用于Python和shell命令的路径。

最新更新