python2通过sys.argv接收json格式参数问题一二
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
近期在试验平台,其中通过前端命令来执行框架,并将用例信息通过json传递。本来以为json如此强大和简单,应该水到渠成,却不想发生一个诡异的事情,当json通过argv形式给py文件传递参数时会遇到以下坑:
1、json格式不对:传递的json中可能含有单引号,再就是双引号会失效,下面会讲到
2、json中有中文,在py文件中解析会报编码错误
3、json中有空格,导致py文件接收参数时不完整
这个问题不知道在py3中有没有出现,至少py2中是个大坑。网上的答案基本有2种:一种是先使用json.dumps()存储起来,保留原格式,然后再json.loads();还有一种是使用demjson库。但最后都失败了。今天我讲下我的解决办法,可能不是最好的,但是管用!
问题一:格式问题
通过sys.argv传参给py文件,一个问题就是双引号会被当成是字符的一部分为省略掉如图:
解决方法:转义,如图:
问题二:中文问题,argv传参的最多大问题是此时的中文编码是控制台的编码而不是utf-8,如图:
解决方法:获取字符编码再解码
问题三:json中有空格咋办,这种情况很少,但是不能完全避免,此时的空格会被认为是两个argv参数之间的分隔符,如图:
解决方法:拼接argvs,目前没想到别的方法,拼接是简单粗暴的,但是不能用join拼接,因为中文编码报错。使用+:
综上是三个问题的最后解决办法,如果有更好的方案,我会及时贴出来,如果有大神知道,希望指点指点!
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)