如何轻松地检查符号链接支持?

2024-09-28 21:56:57 发布

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

我需要检查是否在这个平台上我有符号链接支持或没有。我从Python的测试包中得到了这段代码。你知道吗

_can_symlink = None
def can_symlink():
    global _can_symlink
    if _can_symlink is not None:
        return _can_symlink
    symlink_path = TESTFN + "can_symlink"
    try:
        os.symlink(TESTFN, symlink_path)
        can = True
    except (OSError, NotImplementedError, AttributeError):
        can = False
    else:
        os.remove(symlink_path)
    _can_symlink = can
    return can

这是最好的方法吗?我担心抛出异常不是因为我没有符号链接支持,而是因为没有足够的权限。因此,通过对权限执行额外的检查,这是否足以改进此代码?还是有更好的方法来检查?你知道吗


Tags: path方法代码none权限returnos链接
2条回答

好吧,这是最好的办法。请注意,有些Microsoft文件系统支持符号链接,有些则不支持符号链接。当然,Linux和UNIX也是如此—如果在它们中安装了胖文件系统,则不支持符号链接。你知道吗

上面的代码有两个小问题:

  1. can=True可以移到else中;通常较小 你的try条款越好
  2. 使用global是使用global获取内容的一种方法 生命周期,但遗憾的是,它也是(模块)全局范围。你可以 还为函数提供一个默认参数以获取全局生存期 这是局部的。或者只是使用一个类。你知道吗

我认为,添加权限检查可以解决这个问题,但是我认为最好列出支持符号链接的平台并检查当前的平台。你知道吗

>>> import platform
>>> platform.system()
'Windows'

它更简单,因为平台不会增加那么多。你知道吗

相关问题 更多 >