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

一、在运用requests发送请求,响应数据转成json提醒,未有可解码的json

安装或更新第三方库时出现如下警告

[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

原因:

  • 行使了文本编辑去编辑Podfile文件;Pod文件最好应用Xcode编辑,大概采用Vim编辑。
  • Podfile 的剧情语法格式有标题

化解办法:

这是由于,发送请求的数目,存在错误,响应出错比如404
400,所以找不到能够解码的json

示范如下:

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字典

如上海教室代码假设试行报如下错误:

图片 1

化解办法,eval()函数将字符串,转变来字典;如下所示

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中,读出来的时候私下认可正是字符串,假诺读出来直接运用就会产出本文的荒谬,

由此何地错了这么些要精晓,那是二个小细节;调节和测试输出,发现输出跟以下是千篇壹律的,

尚无错呀那是字典呢{‘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

是或不是很想得到,难题毕竟出在何地,那几个主题素材让自家纠结了遥遥无期,3个不太上心的小题目。

图片 2

不错,大家便是东拼西凑的时候,多了多少个返斜扛。去掉后难点消除。

 

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

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

图片 3

由来:双击试行的时候,不会自动进化找出包,只会在现阶段文件夹及子文件夹中找找

那便是说怎么做呢,把推行文书,在项目根目录下建个run.py做为实施入口,难题一下子就解决了。

图片 4

 

您只怕会说了,这样做,作者某个引用路径的地方不对了,那小编臆想是获取路线的办法是

os.getcur
 获取当前路径,那样壹来,你各类文件用的路线都以时下引用文件所在的门径

所以提出起个gl文件,用来存款和储蓄路线。等新闻。

os.path.abspath(os.path.dirname(__file__))
用那些得到当前路线,而不要用os.getcur

要不然,即便你把获得路线这个,配置到gl也正是独立2个py中,那么分裂职责调用。路线也会分裂。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图