加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

让glob遵循Python中的符号链接

发布时间:2020-12-20 13:20:02 所属栏目:Python 来源:网络整理
导读:假设我有一个符号链接的子目录,如下所示: subdir/ folder/ readme.txt symlink/ = ../hidden/hidden/ readme.txt 如果我运行以下代码: from pathlib import Path list(Path('./subdir/').glob('**/readme.txt')) 我希望结果如下: subdir/folder/readme.tx
假设我有一个符号链接的子目录,如下所示:

subdir/
    folder/
        readme.txt
    symlink/ => ../hidden/
hidden/
    readme.txt

如果我运行以下代码:

>>> from pathlib import Path
>>> list(Path('./subdir/').glob('**/readme.txt'))

我希望结果如下:

subdir/folder/readme.txt
subdir/symlink/readme.txt

但实际结果是:

subdir/folder/readme.txt

我发现这是因为(对于一些未记录的原因)**运算符不遵循符号链接.

有没有办法以实际方式更改此配置?

解决方法

我以前从未使用过pathlib,所以你可以扩展这个解决方案以利用它的一些功能,但我只能使用glob工作.

from glob import glob
list(glob('./subdir/*/readme.txt'))

输出:

['./subdir/folder/readme.txt','./subdir/symlink/readme.txt']

如果你设置使用具有多个子目录深度的glob,那么hackish解决方案是将包含额外* /(例如./subdir/*/*/*/readme.txt)的变体包含到任意深度,并且连接每个变体的结果.

执行所需操作的更合适的方法是编写具有所需行为的自定义函数(通过符号链接搜索任意深度),并以您希望的方式处理圆形路径的大小写.有关使用os.walk执行此操作的提示,请参阅this question(请记住设置followlinks = True).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读