【问题标题】:Search jpeg files using python使用python搜索jpeg文件
【发布时间】:2010-04-06 11:59:44
【问题描述】:

我的要求是使用 python 脚本在目录中搜索 jpeg 图像文件并列出文件名。任何人都可以帮助我如何识别 jpeg 图像文件。

提前谢谢...

【问题讨论】:

  • “识别”是指带有“.jpg”和“.jpeg”扩展名的文件,还是指实际查看文件内容并检查它是否是有效的JPEG图像?
  • 不,我只想使用文件扩展名进行搜索。

标签: python search file


【解决方案1】:

如果您需要以非递归方式搜索单个文件夹,您可以这样做

>>> import glob
>>> glob.glob("D:\\bluetooth\*.jpg")
['D:\\bluetooth\\Image1475.jpg',  'D:\\bluetooth\\Image1514.jpg']

在此处阅读有关glob 的更多信息,您可以使用类似通配符搜索的 unix 功能,例如

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']

【讨论】:

    【解决方案2】:

    如果要扫描子文件夹:

    import os
    
    for root, subdirs, files in os.walk(DIRECTORY):
        for file in files:
            if os.path.splitext(file)[1].lower() in ('.jpg', '.jpeg'):
                 print os.path.join(root, file)
    

    否则,在其他答案中使用其他 glob 函数之一,或者这样:

    import os
    
    for f in os.listdir(DIRECTORY):
        if os.path.splitext(f)[1].lower() in ('.jpg', '.jpeg'):
            print os.path.join(DIRECTORY, f)
    

    应该可以正常工作。

    【讨论】:

    • splitext 返回带有点的扩展名,所以你想要in ('.jpg', '.jpeg')。
    • 是的,你是对的。我已经更新了,谢谢指正:-)
    • 但我不想在子目录中查找文件。
    • 好的,我已经更新了答案,只包括扫描一个文件夹。
    • 第一次迭代时 root, subdirs 的值是多少?子目录在哪里使用?
    【解决方案3】:

    使用magic 模块获取MIME 类型,并查找image/jpeg。

    【讨论】:

      【解决方案4】:
      import os
      path=os.path.join("/home","mypath","to_search")
      for r,d,f in os.walk(path):
           for files in f:
                 if files[-3:].lower()=='jpg' of files[-4:].lower() =="jpeg":
                      print "found: ",os.path.join(r,files)
      

      【讨论】:

      • 我发现str.endswith() 更容易阅读。 @Nims:考虑验证这个答案,或者至少支持它。
      • 我建议if os.path.splitext(files)[1] in ('.jpg', '.jpeg'):,否则会处理一个名为imnotajpeg的文件。
      【解决方案5】:

      如果要根据文件内容判断图片格式,可以使用Python Imaging Library:

      import Image
      try:
          img = Image.open('maybe_jpeg_file')
          print img.format # Will return 'JPEG' for JPEG files.
      except IOError:
          print "Not an image file or unreadable."
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-01
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多