我正在尝试根据存储在 .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、逻辑还是图像上?
问题可能在于文件路径。虽然图像和 .csv 文件在同一文件夹中,os.rename 需要使用完整的路径,除非您已经将该文件夹设置为当前工作目录。
.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.")
os.path.join(folder_path, line[0])
os.path.join(folder_path, line[1] + '.png')
os.path.exists
FileNotFoundError
确保 folder_path 的值是包含图像和 .csv 文件的文件夹路径。如果文件夹就在当前目录下,也可以直接设置为 folder_path = '.'。
folder_path
folder_path = '.'