【问题标题】:Python OS symlink and .json.gz filesPython 操作系统符号链接和 .json.gz 文件
【发布时间】:2016-06-16 16:38:03
【问题描述】:

我正在使用 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 文件有问题吗?

【问题讨论】:

    标签: python json gzip


    【解决方案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
    

    【讨论】:

    • 感谢您的描述。 Flowfree 为我指明了正确的方向,但您的解释带来了解决方案,我现在明白了!我还发现了tree,很有用!
    【解决方案2】:

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

    【讨论】:

    • 啊!我正在使用2.7,这似乎仅适用于3。我正在努力寻找解决方案。
    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2017-08-26
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多