【问题标题】:Does Python os.walk(...,followlinks=True) work in WIndows (Vista)?Python os.walk(...,followlinks=True) 在 WINdows (Vista) 中工作吗?
【发布时间】:2013-12-14 16:23:12
【问题描述】:

我有一个简单的目录,其中仅包含 2 个指向其他目录的链接。 os.walk 不会进入它们,它会报告 2 个文件和 0 个目录。 我注意到文档指的是“符号链接”,我怀疑这是一个 Unix 术语而不是 MS,但我不确定。 还是我还缺少其他东西?

[Vista Pro 上的 Python 2.7]

【问题讨论】:

    标签: python-2.7 os.walk


    【解决方案1】:

    它不适用于 Windows(至少在 Windows 7 中)。

    followlink 依赖于os.islinkos.isdir。但两者都为 Windows 中的链接目录返回 False(在 Python 2.7 中)。

    顺便说一句,在 Python 3.2+ 中,os.islink 返回 True 以获得符号链接。但是os.isdir 仍然返回Falseos.walk 也不起作用。

    os.path.islink on windows with python

    【讨论】:

    • 有解决办法吗?签名,Kludges R Us。 :)。我的意思是比链接中建议的更简单?或者,有什么理由不迁移到 3.2 吗?我正在使用 2.7 附带的 Google App Engine 进行另一个项目,不确定是否支持 3.2。
    • @RFlack,我不知道另一种解决方法。恕我直言,您需要实现自己的os.walk 版本,因为os.isdir 仍会为符号链接返回False
    • @RFlack,Python 3.x 的语法略有不同。并且一些库不支持 Python 3.x(还)。您应该首先检查您正在使用的库是否支持 Python 3.x。
    • 有人想知道有多少人做了增强的步行程序......另外,我很好奇这种行为的基本原理,假设有一个。
    • @RFlack 我敢打赌没有理由。这纯粹是缺乏规范化和严谨性。自 2000 年以来,NT 至少支持 junctions。boost 文件系统在这方面的考虑比看起来的 python 团队要多。最后,由于在这些情况下难以规范化(操作系统之间的抽象概念),他们决定将其全部删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多