小能豆

重命名文件夹中的图像

py

我正在尝试根据存储在 .csv 中的名称重命名文件夹中的图像。

我真的不明白下面的代码有什么问题。图像和 .csv 位于同一文件夹中

with open('labels.csv', 'r') as f:
    lines = csv.reader(f, delimiter = ',')
    for line in lines:
        os.rename(line[0], line[1] + str('.png'))

我收到以下错误。

FileNotFoundError: [WinError 2] The system cannot find the file specified: '100000.png' -> '1.png'

我以前(不久前)试过这个,而且成功了。问题出在 .csv、逻辑还是图像上?


阅读 25

收藏
2024-11-07

共1个答案

小能豆

问题可能在于文件路径。虽然图像和 .csv 文件在同一文件夹中,os.rename 需要使用完整的路径,除非您已经将该文件夹设置为当前工作目录。

以下是改进的代码,确保在重命名时包含文件的完整路径:

import csv
import os

# 假设图像和 CSV 文件都在同一文件夹中,例如 'images_folder'
folder_path = 'images_folder'

with open(os.path.join(folder_path, 'labels.csv'), 'r') as f:
    lines = csv.reader(f, delimiter=',')
    for line in lines:
        # 拼接图像的完整路径
        old_name = os.path.join(folder_path, line[0])
        new_name = os.path.join(folder_path, line[1] + '.png')

        # 检查文件是否存在
        if os.path.exists(old_name):
            os.rename(old_name, new_name)
        else:
            print(f"File {old_name} not found.")

说明

  1. 完整路径:通过 os.path.join(folder_path, line[0])os.path.join(folder_path, line[1] + '.png') 确保 os.rename 使用完整路径。
  2. 检查文件是否存在:在重命名前用 os.path.exists 检查文件是否存在,以避免 FileNotFoundError

确保 folder_path 的值是包含图像和 .csv 文件的文件夹路径。如果文件夹就在当前目录下,也可以直接设置为 folder_path = '.'

2024-11-07