Python遍历文件夹,获取图片信息并存入JSON
需积分: 10 39 浏览量
更新于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文件,便于后续处理或分析。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-08-26 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-12-22 上传