我正在使用 Python 创建符号链接(symbolic link)。首先,我检查文件是否存在,然后创建符号链接(symbolic link)。
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")
但是,当我运行需要此符号链接(symbolic link)的脚本时,它失败了。在使用 finder 检查时,我得到操作无法完成,因为无法找到“nodes1.json.gz”的原始项目。
我确信我有正确的路径并且正确设置了符号链接(symbolic link)。使用 .gz
文件有问题吗?
最佳答案
符号链接(symbolic link)路径是相对于符号链接(symbolic link)所在目录的。您的真实文件比当前目录高两级,但您的符号链接(symbolic link)仅高一级,然后再深一级。如果我为你的父目录命名,它会像
current directory aaa/bbb/ccc
real file aaa/project/json/nodes1.json.gz
symlink aaa/bbb/simulations/project/nodes1.json.gz
你的符号链接(symbolic link)应该更深一层
../../../project/json/nodes1.json.gz
检查符号链接(symbolic link)的一个好方法是进入包含链接的目录,然后按照它查看哪里出了问题。
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
关于Python 操作系统符号链接(symbolic link)和 .json.gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864850/