关于Python编码,超诡异的,我也是醉了
Python的编码问题,真是让人醉了。最近碰到的问题还真不少。比如中文文件名.csv 。python对外呈现不一致啊,感觉好不公平。
没图说个JB,下面立马上图。
我早些时候的其他脚本,csv都是中文命名的,都没有出现这些问题。现在都还能跑。
再次回头看以前的脚本,以前的脚本是这么写的
with open(parent_DIR + r"\testdata\\投资申请.csv","rb+") as csvfile:
问题1已解决。
更离谱的是同一段代码往同一个csv文件写中文内容,前面的竟然能正确显示,后面的竟然是乱码!!!
问题2,已解决。解决方案如下:
根据这个,修改过后的代码如下:
def execRequestTestCase(url,args,requestmethord ="post"): import copy testCase = args["testCase"] assertion = args["assertion"] del args["testCase"] del args["assertion"] testData =copy.deepcopy(args) if "post" in requestmethord: testResultDetail =requests.post(url,args).content if "get" in requestmethord: if args.has_key("id"): url =url + args["id"] del args["id"] argsstr = "" if len(args): argsstr = "?" for k,v in args.items(): argsstr =argsstr + k + "=" + v + "&" argsstr = argsstr[0:len(argsstr)-1] testResultDetail =requests.get(url + argsstr).content testCase =testCase.decode("GBK") testResult ="FALSE" if assertion in testResultDetail: testResult ="PASS" return dict(testCase =testCase ,testData =testData, assertion = assertion,testResultDetail=testResultDetail,testResult=testResult)
原来还和get或post 有关,原来代码未走get的逻辑时一切正常,当走过get的逻辑后,汗,操作系统的编码竟然被更改了。。哎呦,这超诡异的。
最近,我读过一篇文章讲述python编码的。讲得很清楚,http://www.ituring.com.cn/article/61192