Python 操作系统符号链接(symbolic link)和 .json.gz 文件

标签 python json gzip

我正在使用 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/

相关文章:

java - 如何将字符串数组添加到 JSON

python - 将字典值作为构造函数的参数传递

python - 如何在 Linux 上取消聚焦(模糊)Python-gi GTK+3 窗口

php - 在angularJs中访问对象时出现未定义错误

Gzip 的 JavaScript 实现

linux - 您如何为 PIGZ(并行 gzip)准备压缩流?

java - 这是 Java GZipInputStream 类中的错误吗?

python - 在字典列表中编码

python - 在 python 中使用异常和文件时清理

javascript - 无需解析即可获取ajax输出