用Python创建断开的符号链接

2024-09-28 20:50:59 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python,我想创建一个指向不存在的路径的符号链接。但是os.symlink只是抱怨“OSError:[Errno 2]没有这样的文件或目录:”。。使用ln程序很容易做到这一点,但是如何在Python中使用它而不调用Python中的ln程序呢?

编辑:不知怎么搞砸了:/。。。以下两个答案均正确


Tags: 文件答案路径程序目录编辑os链接
3条回答

尝试在不存在的目录中创建符号链接时会引发此错误。例如,如果/tmp/subdir不存在,则以下代码将失败:

os.symlink('/usr/bin/python', '/tmp/subdir/python')

但这应该成功运行:

src = '/usr/bin/python'
dst = '/tmp/subdir/python'

if not os.path.isdir(os.path.dirname(dst)):
    os.makedirs(os.path.dirname(dst))
os.symlink(src, dst)

您确定用正确的参数调用symlink吗?

os.symlink('/usr/bin/python', 'python')

这将从当前工作目录中的python创建到/usr/bin/python的符号链接。

创建符号链接不需要存在该文件。以下示例演示如何创建指向不存在文件的符号链接:

首先,检查/home/wieslander/tmp中没有名为foobar的文件:

[wieslander@rizzo tmp]$ ls -l /home/wieslander/tmp/foobar
ls: cannot access /home/wieslander/tmp/foobar: No such file or directory

创建一个名为brokensymlink的符号链接,指向/home/wieslander/tmp/foobar

[wieslander@rizzo tmp]$ python
Python 2.5.2 (r252:60911, Sep 30 2008, 15:42:03)
[GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.symlink('/home/wieslander/tmp/foobar', 'brokensymlink')

检查符号链接是否已创建且目标仍然不存在:

[wieslander@rizzo tmp]$ ls -l brokensymlink
lrwxrwxrwx 1 wieslander wieslander 27 19 nov 13.13 brokensymlink -> /home/wieslander/tmp/foobar
[wieslander@rizzo tmp]$ ls -l /home/wieslander/tmp/foobar
ls: cannot access /home/wieslander/tmp/foobar: No such file or directory

相关问题 更多 >