python - os.walk() 是否缺少指向目录的符号链接(symbolic link)?

标签 python traversal symlink directory-traversal

我有一个包含一些文件、一些目录、一些文件的符号链接(symbolic link)和一些目录的符号链接(symbolic link)的目录。

当我在目录中使用 followlinks=false 执行 os.walk() 时,我得到了文件名列表中的文件和文件的符号链接(symbolic link)以及目录名列表中的目录。但是目录的符号链接(symbolic link)不会显示在任何地方。这是 Python 中的错误或功能,还是我做错了什么?

我希望目录的符号链接(symbolic link)显示在文件名列表中,因为它们不是目录而是符号链接(symbolic link),而其他符号链接(symbolic link)(指向其他文件)显示在文件名列表中。

例子: 目录 foo 包含以下内容:

-rw-rw-r-- 4 rikno staff 136 Jan 14 11:10 firefox
lrwxr-xr-x 1 rikno staff   5 Jan 23 13:29 latex -> tetex
lrwxr-xr-x 2 rikno staff  68 Jan 14 11:10 mozilla -> firefox
drwxrwxr-x 3 rikno staff 102 Jan 23 13:29 tetex

我希望 os.walk('foo') 在第一次迭代中返回

('foo', ['tetex'], ['firefox', 'latex', 'mozilla'])

或至少

('foo', ['latex', 'tetex'], ['firefox', 'mozilla'])

但我得到的只是

('foo', ['tetex'], ['firefox', 'mozilla'])

而且我从来没有得到任何关于 latex 符号链接(symbolic link)(指向目录 tetex)的信息

已解决:

好的,结果

('foo', ['latex', 'tetex'], ['firefox', 'mozilla'])

因此目录的符号链接(symbolic link)显示在目录名称列表中。

我首先希望目录的符号链接(symbolic link)在文件名列表中,但从未查看目录名列表,并且在尝试代码和文件系统以查找链接位置或链接“丢失”的原因时,我不小心混淆了我的结果。

抱歉提问。

最佳答案

您写到您调用了 os.walk() 并将 followlinks 设置为 False。好吧,那就是 expected behavior :

By default, walk() will not walk down into symbolic links that resolve to directories. Set followlinks to True to visit directories pointed to by symlinks, on systems that support them.

关于python - os.walk() 是否缺少指向目录的符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483147/

相关文章:

python - TypeError : list indices must be integers or slices, not str - 从 json 获取

python - 网格搜索: Get index that corresponds best to value (for a whole matrix)

jquery - 如何使用 jQuery 查找具有特定扩展名的链接

javascript - 在 jQuery.find() 中跳过选择器的递归?

iphone - 3.0 中的动态(Default.png)启动画面 [iPhone SDK]

python - 将 HTML Ipython 对象输出到磁盘

python - PostgreSQL 在 'Local time zone' 中保存日期,而我使用 Django 将其设置为 'UTC'

java - 使用Java遍历文件和目录

macos - 在 Cocoa 中设置符号链接(symbolic link)的修改日期

python - 无法删除/取消链接到 python 和 Windows 中目录的符号链接(symbolic link)