精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
近期用python开发小项目,代码用python3.6开发,但客户环境是python2.4,向下兼容比较难,遇到了些不常见错误,比如:TypeError: 'encoding' is an invalid keyword argument for this function。
众所周知,python的open函数打开文件,前3个参数是未命名的,后面的参数带命名,语法形式如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
带了encoding参数,文件读取的结果就是转码后的正常文本,如果不转码,则是乱码,影响功能。但是python2.4没有encoding命名参数,没有才报:TypeError: 'encoding' is an invalid keyword argument for this function。
打开文件时不指定转码参数,读出结果时对字符串再转码使用。
代码如下:
myfile=open(file_path,'r') info_str = al[linecount-1].decode("gbk")
python最大的优点就是数据类型的易用性,这个事故通过优点弥补了版本低的问题。