Python 3.7 文档os.symlink(src, dst)是Create a symbolic link pointing to src named dst.
让我们想象一下这个工作目录:
+-- nb.ipynb
+-- dir1
| +-- file1
+-- dir2
假设我想在我的 notebook 中创建一个dir2名为filed2指向的符号链接。dir1/file1nb.ipynb
在笔记本的一个单元格中,我会放:
import os
os.symlink('dir1/file1', 'dir2/file2')
但是,这不起作用,这将在 dir2 中创建一个 file2,但是当您查看此文件的属性时,它的TypeisLink(broken) (inode/symlink)和Link targetis dir1/file1。Link 目标是您在 os.symlink 中作为 src 放置的内容。要获得正确的符号链接,需要执行以下操作
os.symlink('../dir1/file1', 'dir2/file2')
这意味着os.symlink(src, dest),src应该包含源相对于目标的路径。
由于我不得不多次创建这样的符号链接,我创建了这个函数:
def symlink_rel(src, dst):
rel_path_src = os.path.relpath(src, os.path.dirname(dst))
os.symlink(rel_path_src, dst)
打电话
symlink_rel('dir1/file1', 'dir2/file2')
将创建正确的符号链接。在我看来 os.symlink 的行为不像文档所说的那样。为什么os.symlink需要src为路径src相对dst,而不是src和dst从工作目录路径?
慕姐8265434
相关分类