相对于另一个位置的球体

时间:2019-11-28 03:25:24

标签: python glob

假定以下目录结构:

\dir1
  \dir2
    \dir3
      data.txt
    more.txt

如果当前工作目录为\dir1,请运行以下代码:

from pathlib import Path
print(list(Path('.').glob('**/*.txt')))

..将给出此结果(在Windows上):

[WindowsPath('dir2/more.txt'), WindowsPath('dir2/dir3/data.txt')]

这是预期的。但是,改为运行:

print(list(Path('dir2').glob('**/*.txt')))

..给出完全相同的结果。我本来期望:

[WindowsPath('more.txt'), WindowsPath('dir3/data.txt')]

显然,glob()对象的Path方法返回相对于当前工作目录的结果,仅将glob限制为对象中的路径。

是否有一种更简单的方法(至少使用Pathpathlib)来获得预期的结果,而不仅仅是将工作目录更改为该文件夹,运行glob并返回到原始工作目录?

这个结果对我来说似乎是一个错误。毕竟,当这两个命令具有有用且明显不同的含义时,让它们返回相同的结果有什么意义?

# expecting a result relative and restricted to dir2
print(list(Path('dir2').glob('**/*.txt'))) 

# expecting a result relative to ., restricted to dir2
print(list(Path('.').glob('dir2/**/*.txt'))) 

0 个答案:

没有答案