Python使用中错误(持续更新.....)

一、在使用requests发送请求,响应数据转成json提示,没有可解码的jsonajax

解决办法:数据库

这是因为,发送请求的数据,存在错误,响应出错好比404 400,因此找不到能够解码的jsonjson

示例以下:函数

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
response = Session().post(url,data=postdata)
print(response.json())

其实从图上很明显能看出问题,由于postdata是字符串类型,不是dict字典post

如上图代码若是执行报以下错误:url

解决办法,eval()函数将字符串,转换成字典;以下所示spa

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=eval(postdata)) print(request.json())

有人可能会说,你这不是画蛇添足吗?把postdata直接定义成字典不就好了;你说的没错确实能够这样调试

postdata = {'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=postdata)
print(request.json())

可是若是如下这串数据,存储在数据库中,或者excel中,读出来的时候默认就是字符串,若是读出来直接使用就会出现本文的错误,excel

因此哪里错了这个要知道,这是一个小细节;调试输出,发现输出跟如下是同样的,code

没有错呀这是字典呢{'xxxx':'xxx'..........},可是它就是字符串。容易被忽略,因此还要使用eval(postdata)函数转成字典

{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}

正确代码:

postdata = '''{'userName':'13718651996',
            'passwd':'yhlxxxx870120',
            'validateCode':'abc',
            'rememberMe':'true'}'''
url = 'https://secure.elong.com/passport/ajax/elongLogin'
request = Session().post(url,data=eval(postdata))
print(request.json())

------------------------------我是华丽的分隔线----------------------------------

二、join拼接路径

os.path.join拼接路径,遇到的问题,常常会把本身绕进去

 

str = r'd:\PHJ\Reporter\LOGS'
#报告文件路径
reporPath = os.path.join(str,'report')
isExistPath(reporPath) #建立文件夹

print(reporPath)

imgPath = os.path.join(reporPath,'\\Image')
print(imgPath)

 

错误输出输出:

d:\PHJ\Reporter\LOGS\report
d:\Image

咱们期待结果:

d:\PHJ\Reporter\LOGS\report
d:\PHJ\Reporter\LOGS\report\Image

是否是很奇怪,问题到底出在哪里,这个问题让我纠结了很久,一个不太注意的小问题。

没错,咱们就是拼接的时候,多了两个返斜扛。去掉后问题解决。

 

三、写完项目,直接在计算机中双击py文件,报文件中引用的包找不到

项目结构,要执行run文件夹下的run.py ;报找不到run文件中引用的包


缘由:双击执行的时候,不会自动向上搜索包,只会在当前文件夹及子文件夹中搜索

那么怎么办呢,把执行文件,在项目根目录下建个run.py作为执行入口,问题解决。

 

你可能会说了,这样作,我一些引用路径的地方不对了,那我估计是获取路径的方式是

os.getcur  获取当前路径,这样一来,你每一个文件用的路径都是当前引用文件所在的路径

因此建议起个gl文件,用来存储路径。等信息。

os.path.abspath(os.path.dirname(__file__)) 用这个获取当前路径,而不要用os.getcur

不然,即便你把获取路径这些,配置到gl也就是单独一个py中,那么不一样位置调用。路径也会不一样。

相关文章
相关标签/搜索