glob.glob()的一个坑

在学习到《Tensoflow:实战Google深度学习框架(第2版)》-第六章图像识别与卷积神经网络- 6.52.Tensorflow实现迁移学习的章节当中,遇到了一个预处理图像的一个坑。

# 获取一个子目录中所有的图片文件
extensions = ['jpg', 'jpeg','JPG','JPEG'] # 注意下这里
        file_list = []
        dir_name = os.path.basename(sub_dir)
        for extension in extensions:
            file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extension)
            print(file_glob)
            file_list.extend(glob.glob(file_glob))
        if not file_list:
            continue
        print(len(file_list))
extensions = ['jpg', 'jpeg','JPG','JPEG'] 

  这行代码在Linux下是没问题的,但是在Windows下运行是有问题的。

问题出现在下面的glob.glob()函数,里面的通配符匹配,在Windows下是不区分大小写的,而在Linux下是区分大小写的,所以在Linux下没这个问题。

但在Windows中,glob.glob()把*.jpg和*.jpeg的图片分别读取了两次(小写一次,大写一次),file_list自然的也增加了一倍的数据。

所以代码应该修改为:

extensions = ['jpg', 'jpeg']  # windows

在图片的预处理中,数据翻倍,会增加很多的时间,不仅如此,内存消耗也会增加很多,我在遇到这个坑的时候,16G内存也不够用,也白白浪费了很多时间。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值