我有一个名为“的可执行文件”我的camelcase.exe在当前python脚本目录和子文件夹“MyFolder”中。另外,在“MyFolder”中还有另一个可执行文件DontWannaFindThis.exe". 我想找出所有的我的camelcase.exe“在当前目录和所有子文件夹中。因此,我使用路径.rglob(图案):
from pathlib import Path
if __name__ == '__main__':
[print(f) for f in Path.cwd().rglob('MyCamelCase.exe')]
[print(f) for f in Path.cwd().rglob('.\MyCamelCase.exe')]
[print(f) for f in Path.cwd().rglob('*.exe')]
此代码导致以下输出:
^{pr2}$如果提供完整的文件名,而另一方面,当使用带有“.*”的模式时,rglob为什么只返回小写的字符串,而返回一个包含原始符号的字符串? 注意:使用时也会发生这种情况路径.glob()
这是因为Windows上的所有路径都不区分大小写(事实上,在windows10之前没有办法使Windows区分大小写)。由于某些原因,在查找完全匹配的情况下,pathlib会使Windows中的路径变为小写。当它用
*
进行普通的globbing时,它从Windows获取任何正常表示。在不过,在Windows中大小写不匹配应该无关紧要,而且在处理文件时,信息的唯一使用者是否是计算机本身也不重要。在
正如已经回答的,这是Windows上的正确行为。但是,如果您想显示完整路径而不放弃大小写,
resolve()
方法可能会有用。在例如
注意,
.resolve()
通常用于将相对路径和/或符号链接路径转换为绝对路径。在相关问题 更多 >
编程相关推荐