loc*_*oop 24 python jupyter jupyter-notebook
是否有获取笔记本路径的功能?
我在谷歌上搜索了一些关于这个主题但没有找到一个简单的方法来做到这一点......我想获得笔记本的路径,以便我可以在其他地方使用它。这样我就可以在与笔记本相同的路径中保存/使用文件,而不必担心它被保存在哪里。
现在我的解决方案是将以下代码放在最上面,但显然这至少会带来必须手动执行单元格的问题,而且如果工作目录发生更改,这将停止工作。
import os
current_path = os.getcwd()
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 20
不可能始终如一地获得 Jupyter 笔记本的路径。有关更多信息,请参阅ipython 问题 #10123。我会引用Carreau 的话:
以下是内核(在本例中为 IPython)的一些原因:
- 可能不是从单个文件运行
- 即使是一个文件,该文件也可能不是笔记本。
- 即使是笔记本,笔记本也可能不在文件系统上。
- 即使在一个文件系统上,它也可能不在同一台机器上。
- 即使在同一台机器上,文件的路径在 IPython 上下文中也可能没有意义。
- 即使它有道理,Jupyter 协议也没有被设计成这样做。我们没有计划在短期或长期内改变这种抽象。
您的 hack 在大多数情况下都有效,并且根据情况还不错。
Bra*_*ens 12
更新:
我找到了这个解决问题的答案。以下命令返回 *.py 和 *.ipynb 文件的文件夹路径。
import os
os.path.abspath("")
Run Code Online (Sandbox Code Playgroud)
我做了一些工作来解决这个问题,但我发现这对于非笔记本项目也通常很有帮助。在笔记本所在的同一文件夹中创建一个名为“base_fns.py”的文件。在此文件中放置以下代码:
import os
def get_local_folder():
return os.path.dirname(os.path.realpath(__file__))
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令获取包含 base_fns 的文件夹的路径:
from base_fns import get_local_folder()
rt_fldr = get_local_folder()
print(rt_fldr)
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
在 VSCode Jupyter 中,您可以在单元格中尝试此操作:
import IPython
notebook_name = "/".join(
IPython.extract_module_locals()[1]["__vsc_ipynb_file__"].split("/")[-5:]
)
print(notebook_name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28709 次 |
最近记录: |