2010-04-06 50 views
1

我的要求是使用python腳本在目錄中搜索jpeg圖像文件並列出文件名。任何人都可以幫助我如何識別JPEG圖像文件。使用python搜索jpeg文件

在此先感謝...

+4

通過「確定」,你只是意味着一個名爲「.jpg」文件和「.JPEG」擴展,還是你的意思是真的看看文件內容,並檢查它是否是一個有效的JPEG圖像? – balpha 2010-04-06 12:03:10

+0

不,我只是想使用文件擴展名進行搜索。 – Nims 2010-04-06 12:05:01

回答

2

使用magic模塊來獲取MIME類型,並查找image/jpeg

1
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) 
+0

它正在工作.... 謝謝你... :) – Nims 2010-04-06 12:13:40

+0

我發現'str.endswith()'更容易閱讀。 @Nims:考慮驗證這個答案,或者至少提升它。 – 2010-04-06 12:22:57

+1

我建議'if('.jpg','。jpeg'):'中的os.path.splitext(文件)[1],否則會處理一個名爲'imnotajpeg'的文件。 – nosklo 2010-04-06 13:52:43

8

如果你需要搜索一個文件夾中的非遞歸,你可以簡單地做

>>> 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'] 
6

如果你要掃描子文件夾:

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) 

否則,使用其他答案的其他水珠的功能之一,或本:

import os 

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

應該工作正常。

+1

'splitext'用點返回擴展名,所以你需要'in('.jpg','。jpeg')'。 – nosklo 2010-04-06 13:53:52

+0

是的,你說得對。我更新了它,謝謝你糾正我:-) – cryo 2010-04-06 15:02:49

+0

但我不想在子目錄中找到文件。 – Nims 2010-04-07 12:30:00

1

如果你想以確定文件內容的圖像格式,可以使用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."