Python读取指定路径所有.png (.txt等) 文件,将文件名写入.txt

本文介绍了一种使用Python脚本来生成用于目标检测训练的文件列表的方法。通过遍历指定目录下的所有.png文件,并将文件名写入trainval.txt中,为3D目标检测算法预研中的3DSSD项目准备数据集。
# -- coding: utf-8 --
# 生成trainval.txt文件
import os  

def file_name(file_dir):   
    L=[]   
    for root, dirs, files in os.walk(file_dir):  
        for file in files:  
            if os.path.splitext(file)[1] == '.png':  
                # L.append(os.path.join(root, file))  
                file_name = file[0:-4]+'.png' #去掉.txt
                L.append(file_name)  
    return L  
    
label_folder = '/home/yangguide/Desktop/work/工作/项目工程代码/自动驾驶/3D目标检测算法预研/3DSSD/tf14/3DSSD/dataset/KITTI/object/training/image_2'
trainval_file = '/home/yangguide/Desktop/work/工作/项目工程代码/自动驾驶/3D目标检测算法预研/3DSSD/tf14/3DSSD/dataset/KITTI/object/val.txt'

txt_name = file_name(label_folder)

with open(trainval_file, 'w') as f:
  for i in txt_name:
    f.write('{}\n'.format(i))
f.close()
<think>好的,用户想了解如何在Python中把jpg文件保存到指定路径。首先,我需要回忆一下常用的库和方法。处理图片的话,PIL库也就是Pillow应该是最常用的,还有OpenCV也可能用到。用户的问题里提到了保存到指定路径,所以路径处理和保存方法都要考虑到。 用户提供的参考引用里提到了image.save的用法,比如引用[1]里的代码:image.save(imagePath+'/'+'psReport_%s.png' % images_from_path.index(image), 'PNG')。这说明用户可能已经看过类似的例子,但需要的是jpg格式。不过这里用的是PNG,所以需要调整格式参数为JPEG,并且注意可能需要处理质量参数。 另外,引用[3]提到PIL库的读取问题,但用户现在关心的是保存。所以重点应该在如何正确使用save方法,并指定路径路径拼接方面,用户用了字符串拼接,但更安全的方式可能是用os.path.join或者pathlib来处理,避免不同操作系统的路径分隔符问题。 接下来,我需要分步骤说明。首先,确保安装了Pillow库,如果没有的话需要pip install。然后,用Image.open读取图片,再调用save方法,指定完整路径,包括文件名和扩展名。这里要注意路径是否存在,如果不存在的话可能需要先创建目录,比如用os.makedirs。 还有,用户提到保存为jpg,而Pillow中保存JPEG需要特别注意模式,比如图片是否是RGB模式,否则可能会报错。例如,如果图片是RGBA模式,直接保存为JPEG会出错,需要先转换为RGB。 另外,OpenCV的方法可能不同,比如使用cv2.imwrite,但需要注意颜色通道的顺序是BGR,可能需要转换。这也是一个常见的点,需要提及。 用户可能遇到的常见问题包括路径错误、权限问题、目录不存在,或者图片格式不支持。需要提醒用户检查这些方面。比如使用绝对路径还是相对路径,确保目录存在,使用正确的文件扩展名等。 参考示例中的代码,用户可能已经尝试过类似的方法,但需要调整格式为jpg,并确认路径正确。所以回答中要给出两种主要方法:Pillow和OpenCV,并说明注意事项,如路径处理、模式转换、质量参数等。 最后,生成相关问题时,可以考虑文件格式转换、路径处理、批量保存、图像模式调整等,这些都是用户可能进一步需要了解的内容。</think>在Python中保存JPG文件指定路径,可以使用`PIL`(Pillow库)或`OpenCV`两种常用方法。以下是具体实现步骤: --- ### 方法一:使用PIL(Pillow库) 1. **安装库**:确保已安装Pillow: ```bash pip install Pillow ``` 2. **代码实现**: ```python from PIL import Image import os # 读取图片 image = Image.open("input.jpg") # 指定保存路径(包含文件名) save_path = os.path.join("指定目录路径", "output.jpg") # 确保目录存在 os.makedirs(os.path.dirname(save_path), exist_ok=True) # 保存为JPG(注意:如果是RGBA模式需先转换为RGB) if image.mode in ('RGBA', 'LA'): image = image.convert('RGB') image.save(save_path, "JPEG", quality=95) # quality参数控制压缩质量(0-100) ``` --- ### 方法二:使用OpenCV 1. **安装库**: ```bash pip install opencv-python ``` 2. **代码实现**: ```python import cv2 import os # 读取图片(注意OpenCV读取为BGR格式) image = cv2.imread("input.jpg") # 指定保存路径 save_path = os.path.join("指定目录路径", "output.jpg") # 确保目录存在 os.makedirs(os.path.dirname(save_path), exist_ok=True) # 保存为JPG cv2.imwrite(save_path, image, [int(cv2.IMWRITE_JPEG_QUALITY), 95]) ``` --- ### 关键注意事项 1. **路径处理**: - 使用`os.path.join()`避免系统路径分隔符差异[^2] - 绝对路径示例:`save_path = "/home/user/images/output.jpg"` - 相对路径示例:`save_path = "data/output.jpg"` 2. **文件覆盖**:若同名文件已存在,`save()`会直接覆盖。 3. **错误排查**: ```python try: image.save(save_path) except PermissionError: print("权限不足,请检查路径写入权限") except FileNotFoundError: print("路径不存在,请检查目录结构") ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值