Python3: ValueError: invalid literal for int() with base 10: '.DS_Store' 解决方案

问题

下载了一个脚本,运行时报错:ValueError: invalid literal for int() with base 10: '.DS_Stroe',报错在:

for root, sub_folder, file_list in os.walk(data_dir):
	self.image_names += [os.path.join(root, file_path) for file_path in file_list
	random.shuffle(self.image_names) # 打乱
	# 例如image_name为./train/00001/2.png,提取00001就是其label
	self.labels = [int(file_name[len(data_dir):].split(os.sep)[0]) for file_name in self.image_names]

最后一句,转换为int时,int()函数报错。

原因

因为我这个电脑是mac,在其文件系统中,有一个隐藏的文件.DS_Store,所以在使用os.walk()得到的file_list或者os.listdir()遍历一个文件夹的时候,都会包含到这个隐藏的文件.DS_Store。很明显这个文件不能被转换为int。

解决方案

出现了这个错误,我们需要明确就是.DS_Store不能被转换为int。那么因为我这里是用来训练用的数据集,里边全部是.png后缀的图片,所以可以在遍历的时候加上一个if判断:

self.image_names += [os.path.join(root, file_path) for file_path in file_list if file_path.endswith('png')]

这样就过滤掉了.DS_Store这个隐藏文件,所以要想解决这个错误,就按需过滤掉这个隐藏文件即可!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值