Python OS 符号链接和 .json.gz 文件
Python OS symlink and .json.gz files
我正在用 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
个文件有问题吗?
除非您为 os.symlink()
函数指定 dir_fd
参数,否则您需要为 src
和 dst
参数指定绝对路径。
symlink 路径是相对于 symlink 所在目录的。您的真实文件比当前目录高两层,但您的 symlink 仅高一层,然后再深一层。如果我为你的父目录命名,它会是这样的
current directory aaa/bbb/ccc
real file aaa/project/json/nodes1.json.gz
symlink aaa/bbb/simulations/project/nodes1.json.gz
你的 symlink 应该更深一层
../../../project/json/nodes1.json.gz
检查 symlinks 的一个好方法是进入包含 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 创建符号链接。首先,我检查文件是否存在,然后创建符号链接。
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
个文件有问题吗?
除非您为 os.symlink()
函数指定 dir_fd
参数,否则您需要为 src
和 dst
参数指定绝对路径。
symlink 路径是相对于 symlink 所在目录的。您的真实文件比当前目录高两层,但您的 symlink 仅高一层,然后再深一层。如果我为你的父目录命名,它会是这样的
current directory aaa/bbb/ccc
real file aaa/project/json/nodes1.json.gz
symlink aaa/bbb/simulations/project/nodes1.json.gz
你的 symlink 应该更深一层
../../../project/json/nodes1.json.gz
检查 symlinks 的一个好方法是进入包含 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