Python OS符号链接和.json.gz文件

时间:2016-06-16 16:38:03

标签: python json gzip

我正在用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文件时是否存在问题?

2 个答案:

答案 0 :(得分:1)

除非为os.symlink()函数指定dir_fd参数,否则需要指定srcdst参数的绝对路径。

答案 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