下面的代码只看到带有 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.walkPath.glob 有什么好处?您可以使用Path.glob 列出具有多个扩展名的文件,就像 OP 已经完成的那样。 查看我发表的最新评论,它可以解决单个列表中的许多项目,而不是您想每次都更改正则表达式 @TamilSelvan 您的第二个解决方案(使用os.walk)过于冗长且繁琐。另外最好使用os.path.splitext 来获取文件的扩展名。

以上是关于下面的代码只看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片的主要内容,如果未能解决你的问题,请参考以下文章

互联网浏览器如何触发带有 .jpg 扩展名的 Flash 应用程序? [关闭]

下面的3d 照片墙用WPF应该怎么开发

AD格式的图片怎么样转换成JPG或者BMP格式

如何使用 Photos API 在 iOS 8.0 中检索照片扩展名 (jpg/png)?

Vue.js - 带有自定义叠加层的自定义照片网格

Android中通过ImageSwitcher实现相册滑动查看照片功能(附代码下载)