【问题标题】:The code below only sees photos with jpg extension. How should I change the syntax to include photos in png,jpg,jpeg format下面的代码只看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片
【发布时间】:2021-10-08 22:20:46
【问题描述】:

下面的代码只能看到带有 jpg 扩展名的照片。我应该如何更改语法以包含 png、jpg、jpeg 格式的照片

image_df_train_f = pd.DataFrame({'path': list(Path(input_path).glob('**/*.jp*g'))})

【问题讨论】:

    标签: python png jpeg


    【解决方案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 来获取文件的扩展名。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2018-11-30
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多