Python无法打开我的simlinked文件.我确保文件存在,我可以访问它.我的印象是在操作系统级别上解析了符号链接,因此Python永远不会知道它.
therold@therold:~/Programming/ML/deeptank/dataset/inc (master)$ ls -lisa /Users/therold/Programming/ML/deeptank/dataset/inc/training/tanks/matilda-iv_689.png
7870541 8 lrwxr-xr-x 1 therold staff 46 13 Mai 16:44 /Users/therold/Programming/ML/deeptank/dataset/inc/training/tanks/matilda-iv_689.png -> ../training_data/matilda-iv/matilda-iv_689.png
Run Code Online (Sandbox Code Playgroud)
OSX显然能够解析符号链接的图像文件.但是Python open()方法让我失望:
therold@therold:~/Programming/ML/deeptank/dataset/inc (master)$ python
Python 2.7.10 (default, Sep 23 2015, 04:34:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)] on darwin
>>> open("/Users/therold/Programming/ML/deeptank/dataset/inc/training/tanks/matilda-iv_689.png")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: '/Users/therold/Programming/ML/deeptank/dataset/inc/training/tanks/matilda-iv_689.png'
>>>
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?非常感谢帮助.
我有什么想法我做错了吗?
符号链接的目标不存在.
我不明白为什么我能在我的问题中的ls语句中解决它.
你不是.
ls默认情况下,该命令在链接本身上运行,而不是在链接的目标上运行.如果没有该-L选项,则ls永远不要尝试解析符号链接.
考虑一个包含这两个文件的目录:
$ ls -l
-rw-rw-r-- 1 me me 6 May 13 11:58 a
lrwxrwxrwx 1 me me 3 May 13 12:00 b -> ./a
Run Code Online (Sandbox Code Playgroud)
a是一个包含六个字节的文本文件'hello\n'.b是一个包含目标路径的三个字节的链接文件:'./a'.ls能够在不解除引用链接本身的情况下描述链接的属性.
相反,使用-L选项:
$ ls -lL
-rw-rw-r-- 1 me me 6 May 13 11:58 a
-rw-rw-r-- 1 me me 6 May 13 11:58 b
Run Code Online (Sandbox Code Playgroud)
现在ls已解决链接b,并显示有关链接到文件的信息.随着-L,ls现在宣称这b也是一个六字节的文本文件.
最后,考虑一下:
$ rm a
$ ls -l
lrwxrwxrwx 1 me me 3 May 13 12:00 b -> ./a
$ ls -lL
ls: cannot access b: No such file or directory
l????????? ? ? ? ? ? b
Run Code Online (Sandbox Code Playgroud)
现在b是一个解析为不再存在的文件的链接.由于ls -l从不尝试解析链接,因此其输出与先前的测试相同.(b是一个链接文件,3个字节长,内容'./a'.)
但ls -lL尝试解决链接失败并显示失败信息.
| 归档时间: |
|
| 查看次数: |
4859 次 |
| 最近记录: |