我在IBM Applied AI课程中遇到了这个问题:
path_for_license_plates = os.getcwd() + "/license-plates/**/*.jpg"
**/*.jpg
在上述路径中是什么意思?
答案 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)