这个路径是什么意思/**/*.jpg?

时间:2020-05-01 07:59:32

标签: python

我在IBM Applied AI课程中遇到了这个问题:

path_for_license_plates = os.getcwd() + "/license-plates/**/*.jpg"

**/*.jpg在上述路径中是什么意思?

3 个答案:

答案 0 :(得分:2)

来自https://docs.python.org/3/library/glob.html

glob.glob(路径名,*,递归= False)

如果递归为true,则 模式“ **”将匹配任何文件以及零个或多个目录, 子目录和目录的符号链接。如果图案是 紧接着是os.sep或os.altsep,则文件将不匹配。

答案 1 :(得分:1)

它显然是“递归”模式下的全局模式,例如 “ **”表示。

给出目录树

license-plates/
├── a
│   ├── b
│   │   └── x.jpg
│   └── x.jpg
└── x.jpg

功能 glob.glob() 工作方式如下,

>>> import glob
>>> glob.glob('license-plates/**/*.jpg', recursive=True)
['license-plates/x.jpg', 'license-plates/a/x.jpg', 'license-plates/a/b/x.jpg']

答案 2 :(得分:1)

path_for_license_plates实际上是一个字符串。 就是这样。

可以用来说让我递归地查看“牌照”下所有目录中的所有jpg文件。 更好的问题是“如何在程序的后面使用它?”

(由于他们使用了os模块)这可能是一个较旧的程序。正如其他人展示的那样,这倾向于使用glob模块。但是,如果您要更改此程序,则可以对其进行现代化。

使用现代python(3.6+),以下是您可以询问相同信息的方法:

from pathlib import Path
path_for_license_plates = Path('license-plates').glob("**/*.jpg")
for license_plate_file_location in path_for_license_plates:
    print(license_plate_file_location)

这将假定车牌在当前工作目录中,并为您提供一个生成器,该生成器将产生更短的代码,并且也可以在主要文件系统上使用。 (windows / linux / mac)

相关问题