python做工具遇到报错:[Errno 22] invalid mode ('rb') or filename

最近工作需要,做一个策划excel配置表导出lua配置的工具,用python做的。首先就踩了python中文编码的坑,估计不少人都会遇到,encode和decode的问题:python中,str是字节串,unicode是字符串,字节串decode解码成为字符串,而字符串encode编码成为字节串,一旦用错,诸如下图的报错就会让人痛不欲生:


特别是windows开发,中文编码的问题是一个梗。要知道有些工具是utf8编码,而有些则是gbk编码,如何转换是个大难题。所幸,遇到了AstralWind的这篇文章:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 整个看完基本可以科普一下中文编码相关的基础知识。


言归正传,现在遇到的这个问题比较奇怪,报错如下:



开始以为是读写权限问题,最后发现配置表文件名最后多了个空格,o(╯□╰)o,去掉文件名的空格之后可以正常导出:

罪魁祸首就是excelData = xlrd.open_workbook(filePath)这句代码,这工具是支持所有文件导出(用os.listdir(dirPath)去搜索目录结构下所有文件)及单个文件导出(单个文件的路径是直接将文件拖到控制台中获取的,也就是该文件的绝对路径,但是会是单斜杠的路径,没有用转义),但奇怪的是,单个文件导出,文件名有空格的文件会出问题,而所有文件批量导出是没问题的。二者操作不同导致传入到xlrd.open_workbook中的路径不同,所以批量导出的时候是没问题的,而单个文件导出是有问题的。当然,为了方便起见,我也已经强烈要求策划改配置表的文件名,不允许粗线空格了……^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值