os读取文件夹中的文件名:[a for a in os.listdir(img_dir) if a[0]!='.'] 中的 if a[0]!='.'

使用os模块的listdir方法读取文件夹【images_background】中的文件名,通过if条件过滤掉以.开头的隐藏文件。例程提供了一个简单的实现方式,确保文件夹与程序在同一级目录下。

例程可以参考:https://www.tutorialspoint.com/python/os_listdir.htm

one:
在这里插入图片描述
two:
ps: 此处要读取的文件夹【images_background】与
程序文件 【demo_test.ipynb】处于同一级文件目录中。如图:
不同处同一级文件夹中,参考例程。在这里插入图片描述
不同处同一级文件夹中,参考例程。
three:
文件夹【images_background】包含的文件有:
在这里插入图片描述
three:import os
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在 Python 中,可以通过多种方式获取指定目录下所有以 `.jpg` 和 `.png` 结尾的图像文件列表。以下是几种常见的实现方法。 ### 使用 `glob.glob()` 通过 `glob` 模块可以方便地匹配符合特定模式的文件路径。以下代码将列出指定目录下的所有 `.jpg` 和 `.png` 文件: ```python import glob # 获取指定目录下的所有 .jpg 和 .png 文件 image_files = glob.glob(r'/home/*/*.jpg') + glob.glob(r'/home/*/*.png') print(image_files) ``` 如果需要递归搜索子目录中的文件,则 `glob` 模块可能无法满足需求,此时可以使用 `os.walk()` 或 `pathlib` 模块[^1]。 --- ### 使用 `os.walk()` 和 `fnmatch.fnmatch()` 此方法允许递归遍历目录及其子目录,并筛选出以 `.jpg` 或 `.png` 结尾的文件名: ```python import os import fnmatch def get_image_files(path): image_files = [] for folder_name, sub_folders, file_names in os.walk(path): for filename in file_names: if fnmatch.fnmatch(filename, '*.jpg') or fnmatch.fnmatch(filename, '*.png'): image_files.append(os.path.join(folder_name, filename)) return image_files # 示例调用 images = get_image_files('/Users/trent2766/Pictures/工作照片') print(images) ``` 该方法支持复杂的路径结构,并且能够灵活扩展为其他文件类型[^2]。 --- ### 使用 `pathlib`(Python 3.4+) `pathlib` 提供了面向对象的路径操作接口,代码更加简洁和直观: ```python from pathlib import Path # 定义目标路径 path = Path('/home/user/images') # 查找所有 .jpg 和 .png 文件 image_files = list(path.rglob('*.jpg')) + list(path.rglob('*.png')) print([str(file) for file in image_files]) ``` `rglob()` 方法会递归搜索当前目录及其子目录中的文件,适合大规模目录结构[^1]。 --- ### 批量处理图像文件 如果需要进一步处理这些图像文件,例如读取、转换或保存为其他格式,可以结合 `cv2`(OpenCV)或 `PIL`(Pillow)库进行操作。以下是一个示例,展示如何批量读取并转换 `.dat` 格式文件为 `.bmp` 图像文件: ```python import numpy as np import cv2 import os def float32_to_uint8(img): max_val = img.max() min_val = img.min() img = (img - min_val) / (max_val - min_val) * 255 return img.astype(np.uint8) dat_path = "data/INF_AiRui/groundtruth" save_path = "data/INF_AiRui_bmp/groundtruth" # 确保保存路径存在 os.makedirs(save_path, exist_ok=True) for file_name in os.listdir(dat_path): dat_f = open(os.path.join(dat_path, file_name), 'rb') data = np.fromfile(dat_f, dtype=np.uint16) col = 256 row = 192 data_reshape = data.reshape(row, col) img_uint8 = float32_to_uint8(data_reshape) out_file_name = file_name[:-4] + ".bmp" cv2.imwrite(os.path.join(save_path, out_file_name), img_uint8) print(f"图片 {file_name} 转换成功!") ``` 此代码适用于 `.dat` 文件转图像的操作,并可扩展用于 `.jpg` 或 `.png` 文件的批量处理[^3]。 --- ### 正则表达式匹配图像文件路径 如果需要验证文件路径是否以 `.jpg`、`.png` 等结尾,可以使用正则表达式进行匹配: ```python import re def is_image_file(path): pattern = r'.*\.(jpg|png)$' return re.match(pattern, path) is not None # 测试路径 test_paths = [ '/home/user/image.png', '/home/user/document.txt', '/home/user/photo.jpg' ] results = {path: is_image_file(path) for path in test_paths} print(results) ``` 上述正则表达式 `.*\.(jpg|png)$` 可以有效识别以 `.jpg` 或 `.png` 结尾的字符串[^4]。 --- ### 总结 - **简单路径匹配**:使用 `glob.glob()` 快速列出当前目录中的文件。 - **递归搜索**:使用 `os.walk()` 或 `pathlib` 遍历整个目录树。 - **文件处理**:结合 OpenCV 或 Pillow 进行图像操作。 - **路径验证**:使用正则表达式确保文件路径符合预期格式。 以上方法均可根据具体需求进行调整,如需复制、移动或删除文件,可使用 `shutil.copy()`、`os.rename()` 或 `os.unlink()` 等函数[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值