Python遍历文件夹,获取图片信息并存入JSON

需积分: 10 0 下载量 13 浏览量 更新于2024-08-06 收藏 4KB MD 举报
"该Python脚本用于遍历指定文件夹`./t_images/`下的所有.jpg图片,获取每张图片的文件名、宽度、高度信息,并将这些信息存储到一个字典中。最后,字典内容被序列化为JSON格式并保存到名为`images.json`的文件中。" 在描述的代码中,主要涉及了以下知识点: 1. **Python标准库的使用**: - `os`: 用于处理文件和目录操作。`os.listdir(dirs)`返回指定目录`dirs`下的所有文件和目录名。 - `json`: 用于JSON数据的编码和解码。`json.dumps(item)`将字典对象转换为JSON格式的字符串。 - `cv2`: OpenCV库,用于图像处理,但在这里未直接使用。 - `PIL`(Python Imaging Library): 用于处理图像,如打开、读取、显示和保存各种图像文件格式。 2. **文件操作**: - `open()`: 打开文件。使用`"w"`模式表示覆盖写入,`"a"`模式表示追加写入。 - `with`语句:确保文件在使用完毕后会被正确关闭,即使在处理文件时发生异常。 - `encoding='utf-8'`: 指定文件编码为UTF-8,保证文本文件的读写兼容性。 3. **图像处理**: - `Image.open(dirs+filename)`: 使用PIL库打开图片,返回一个Image对象。 - `im.size`: 获取Image对象的尺寸,返回一个元组,其中第一个元素是宽度,第二个元素是高度。 4. **字典操作**: - `temp={}`: 创建一个新的字典,用于存储单个图片的信息。 - `temp['height']`, `temp['weight']`, `temp['filename']`, `temp['id']`: 在字典中添加键值对,分别表示图片的高度、宽度、文件名和ID(基于文件名数字部分)。 - `data['images'].append(temp)`: 将单个图片信息的字典添加到存储所有图片信息的列表中。 5. **文件操作的异常处理**: - `try-except`语句:捕获并处理可能在写入文件过程中出现的异常。 6. **JSON序列化与反序列化**: - `json.dumps(item)`: 将字典对象`item`转换为JSON格式的字符串,便于写入文件。 - `json.loads(string)`: 反序列化,将JSON格式的字符串转换回Python数据结构,但这里没有用到。 7. **字符串操作**: - `os.path.splitext(filename)`: 分离文件名和扩展名,返回一个包含两部分的元组。 - `str.isdigit`: 判断字符是否为数字。 - `int("".join(list(filter(str.isdigit,filename))))`: 从文件名中提取纯数字部分并转换为整数,用作图片的ID。 这段代码是一个实用的脚本,可以用来批量处理和记录一个文件夹中所有.jpg图片的相关元数据,然后将其保存为JSON文件,便于后续处理或分析。