我正在用Python创建一个符号链接。首先,我检查文件是否存在,然后创建符号链接。
import os
project = 'test'
if os.path.isfile("../../project/json/nodes1.json.gz"):
os.symlink("../../project/json/nodes1.json.gz","../simulations/"+project+"/nodes1.json.gz")
但是,当我运行需要此符号链接的脚本时,它失败了。在使用finder进行检查时,我得到The operation can’t be completed because the original item for “nodes1.json.gz” can’t be found.
我确信我有正确的路径并正确设置符号链接。使用.gz
文件时是否存在问题?
答案 0 :(得分:1)
除非为os.symlink()
函数指定dir_fd
参数,否则需要指定src
和dst
参数的绝对路径。
答案 1 :(得分:1)
符号链接路径相对于符号链接所在的目录。你的真实文件比当前目录高两级,但你的符号链接只有一级,然后是一个额外的级别。如果我为您的父目录组成名称,它将类似于
current directory aaa/bbb/ccc
real file aaa/project/json/nodes1.json.gz
symlink aaa/bbb/simulations/project/nodes1.json.gz
你的符号链接应该是更深层次的
../../../project/json/nodes1.json.gz
检查符号链接的一个好方法是进入保存链接的目录,然后按照它查看出错的地方。
td@mintyfresh ~/tmp/deleteme $ tree
.
└── aaa
├── bbb
│ ├── ccc
│ └── simulations
│ └── project
│ └── nodes1.json.gz -> ../../project/json/nodes1.json.gz
└── project
└── json
└── nodes1.json.gz
7 directories, 2 files
td@mintyfresh ~/tmp/deleteme $ cd aaa/bbb/simulations/project
td@mintyfresh ~/tmp/deleteme/aaa/bbb/simulations/project $ ls -l
total 0
lrwxrwxrwx 1 td td 36 Jun 16 12:06 nodes1.json.gz -> ../../project/json/nodes1.json.gz
td@mintyfresh ~/tmp/deleteme/aaa/bbb/simulations/project $ cd ..
td@mintyfresh ~/tmp/deleteme/aaa/bbb/simulations $ cd ..
td@mintyfresh ~/tmp/deleteme/aaa/bbb $ cd project
bash: cd: project: No such file or directory