【windows系统下正常运行的代码在Linux环境中报错:KeyError:‘某图片路径‘】

windows系统下正常运行的代码在Linux环境中报错:KeyError:'某图片路径'

写下来让自己有个参考
读取dataloader输出时字典的时候找不到正确的键
但是把出错的路径打印出来发现也没有问题
解决方法:
Windows文件分隔符默认为"“,由于是转义符,通常开发中写为”\“,注意,Windows也可以识别”/"分隔符
而linux只能识别"/"
意思是你在windows下对数据进行预处理,构建dataloader中返回的路径是不能被linux识别的

一个例子

class dataloader(Dataset):
	def __getitem__(self, index):
	        filepath = self.files[index % len(self.files)]
	        filename = filepath.split('\\')[-1]   
	        #filename = filepath.split('/')[-1](linux用这行)
	        img = self.transform(Image.open(filepath))
	        label = self.annotations[filename]
	        label = torch.FloatTensor(np.array(label))
	        return img, label

解决办法:
self.files = [file.replace(‘\’, ‘/’) for file in self.files]

另一个例子

class dataloader(Dataset):
	......
 	def __getitem__(self, index):
        left_image = Image.open(self.file_names[index]).convert('RGB')
        image_name = self.file_names[index].replace(self.img_folder, "")
        orig_attributes = self.attributes[image_name]
        transformed_attributes = self.get_transformed_attributes(image_name)
        ......

直接image_name = os.path.basename(self.file_names[index])即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值