【发布时间】:2010-04-06 11:59:44
【问题描述】:
我的要求是使用 python 脚本在目录中搜索 jpeg 图像文件并列出文件名。任何人都可以帮助我如何识别 jpeg 图像文件。
提前谢谢...
【问题讨论】:
-
“识别”是指带有“.jpg”和“.jpeg”扩展名的文件,还是指实际查看文件内容并检查它是否是有效的JPEG图像?
-
不,我只想使用文件扩展名进行搜索。
我的要求是使用 python 脚本在目录中搜索 jpeg 图像文件并列出文件名。任何人都可以帮助我如何识别 jpeg 图像文件。
提前谢谢...
【问题讨论】:
如果您需要以非递归方式搜索单个文件夹,您可以这样做
>>> 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']
【讨论】:
如果要扫描子文件夹:
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')。
使用magic 模块获取MIME 类型,并查找image/jpeg。
【讨论】:
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的文件。
如果要根据文件内容判断图片格式,可以使用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."
【讨论】: