【发布时间】:2021-10-08 22:20:46
【问题描述】:
下面的代码只能看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片
image_df_train_f = pd.DataFrame({'path': list(Path(input_path).glob('**/*.jp*g'))})
【问题讨论】:
下面的代码只能看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片
image_df_train_f = pd.DataFrame({'path': list(Path(input_path).glob('**/*.jp*g'))})
【问题讨论】:
要列出具有不同扩展名的文件,您可以使用 glob,例如 this:
EXTENSIONS = (".png", ".jpg", ".jpeg")
path = [p.resolve()
for p in Path(input_path).glob("**/*")
if p.suffix in EXTENSIONS]
image_df_train_f = pd.DataFrame({'path': path})
请注意,您在 cmets 中提供的解决方案虽然简洁,但可能会列出不必要的文件,因此您不应使用它。
image_df_train_f = pd.DataFrame({'path': list(Path(input_path).glob("*.[jp][pn]g"))})
虽然它确实列出了带有.jpg 和.png(顺便说一下没有.jpeg)扩展名的文件,但它还包括它在目录中找到的.jng 和.ppg 文件。
【讨论】:
您可以简单地向 DF 添加更多内容
image_df_train_f = pd.DataFrame({'path': list(Path(input_path).glob('**/*.jpg'))+list(Path(input_path).glob('**/*.png'))+list(Path(input_path).glob('**/*.jpeg'))})
这会解决你的问题
或=====================
shpfiles = []
for dirpath, subdirs, files in os.walk(path):
for x in files:
if x.split('.')[-1] in ["shp","pdf","txt"]:
shpfiles.append(os.path.join(dirpath, x))
【讨论】:
os.walk 比Path.glob 有什么好处?您可以使用Path.glob 列出具有多个扩展名的文件,就像 OP 已经完成的那样。
os.walk)过于冗长且繁琐。另外最好使用os.path.splitext 来获取文件的扩展名。