让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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |