下面的代码只看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片
Posted
技术标签:
【中文标题】下面的代码只看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片【英文标题】:The code below only sees photos with jpg extension. How should I change the syntax to include photos in png,jpg,jpeg format 【发布时间】:2021-10-08 22:20:46 【问题描述】:下面的代码只能看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片
image_df_train_f = pd.DataFrame('path': list(Path(input_path).glob('**/*.jp*g')))
【问题讨论】:
【参考方案1】:要列出具有不同扩展名的文件,您可以使用 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
文件。
【讨论】:
【参考方案2】:您可以简单地向 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))
【讨论】:
它不起作用,但我用以下代码修复了它: image_df_train_f = pd.DataFrame('path': list(Path(input_path).glob("*.[jp][pn] g"))) 那很好。或者您可以使用 os.walk 方法,因为有时您可以使用 jpg、pdf、docx..etc 等扩展名。 @TamilSelvan 在这个用例中os.walk
比Path.glob
有什么好处?您可以使用Path.glob
列出具有多个扩展名的文件,就像 OP 已经完成的那样。
查看我发表的最新评论,它可以解决单个列表中的许多项目,而不是您想每次都更改正则表达式
@TamilSelvan 您的第二个解决方案(使用os.walk
)过于冗长且繁琐。另外最好使用os.path.splitext
来获取文件的扩展名。以上是关于下面的代码只看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片的主要内容,如果未能解决你的问题,请参考以下文章
互联网浏览器如何触发带有 .jpg 扩展名的 Flash 应用程序? [关闭]