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

解决办法:

这是由于,发送请求的数据,存在错误,响应出错比如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字典

如上图代码如果执行报如下错误:

解决办法,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':'',
'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':'',
'passwd':'yhlxxxx870120',
'validateCode':'abc',
'rememberMe':'true'}

正确代码:

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

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

2、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、写完项目,直接在计算机中双击py文件,报文件中引用的包找不到

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

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

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

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

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

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

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

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

Python使用中错误(持续更新.....)的更多相关文章

  1. LeetCode 题目的 Python 实现(持续更新中)

    Python-LeetCode 是一个使用 Python 语言解决 LeetCode 问题的代码库,库有以下几个方面需要注意: 所有题目都是 AC 的: 按照题目顺序,每 50 个放在一个目录下,方便 ...

  2. LeetCode python实现题解(持续更新)

    目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...

  3. Java遇到的问题、错误——持续更新

    内容:dead code.关于eclipse没有js代码提示的解决 持续更新 ######################################################## dead ...

  4. python练习题(持续更新中。。。。。)

    1.检验注册用户是否合法:需要输入用户名,校验用户名是否被注册,如已注册,提示已经注册过,没注册就可以注册:用户名不能为空:用户名长度必须在6-13位之间:最多只能输入三次. users = ['aa ...

  5. Python 字典 (4) 持续更新

    字典一种用名字来引用值的数据结构,这种数据结构称为 映射(mapping) .字典中的键可以是数字.字符串和元组. 字典 创建和使用 创建 phonebook = {'Aaron':133000000 ...

  6. Python 字符串 (3) 持续更新

    字符串操作 虽然字符串也是一种序列,但是它和元组一样,不可变的.当你想对它修改时,会引发异常.如 >>> strings = "Let's go">> ...

  7. python笔记(持续更新)

    1.编译python遇到下面的编码问题:     SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...

  8. python tips(持续更新)

    1. 引用上一层目录 import syssys.path.append('..')import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题,对 ...

  9. Python相关工具清单[持续更新]

    SublimeJEDI : awesome Python autocompletion with SublimeText. Awesome Python : A curated list of awe ...

随机推荐

  1. 简单探讨spring整合mybatis时sqlSession不需要释放关闭的问题

    https://blog.csdn.net/RicardoDing/article/details/79899686 近期,在使用spring和mybatis框架编写代码时,sqlSession不需要 ...

  2. MongoDB GridFS 存储文件

    使用MongoDB的GridFS方式. CSDN: https://blog.csdn.net/qq_32657967/article/details/81534259官方文档: https://do ...

  3. git rebase 的使用

    rebase 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase. 在本节中我们将学习什么是“rebase”,怎样使用“rebase”,并将展示该操作的惊艳之处,以及指 ...

  4. nodejs在windows下的安装配置(使用NVM的方式)

    NVM的安装 1.下载安装包,https://github.com/coreybutler/nvm-windows/releases 2.下载完成后点击nvm-setup,按步骤安装,注意路径中不能带 ...

  5. Docker-常用命令(7)

    ## List Docker CLI commandsdockerdocker container --help ## Display Docker version and infodocker -- ...

  6. Centos7 安装系统服务、开机自启动

    Centos7 安装系统服务 1 编写可执行程序 * 这里可以是任意编程语言(C.C++.Java.PHP.Python.Perl ...)编写的程序: 当前假设此程序的执行目录为: /myservi ...

  7. python数据分析及展示(二)

    一.Matplotlib库入门 1. Matplotlib库的介绍 http://matplotlib.org/gallery.html可查看Matplotlib库的效果 Matplotlib库由各种 ...

  8. 域渗透分析神器BloodHound

    一.安装过程: 1.首先安装JDK,要求是JDK8 JDK8下载地址 windows下按照提示自动安装好久可以了 2.安装neo4j neo4j图数据库下载地址 下载好后,进入对应的目录在命令行运行如 ...

  9. layui---事件监听

    在使用layui的form表单做验证提交的时候,如果结合vue,或者是三级联动的时候,就需要做事件监听了. 具体语法: form.on('event(过滤器值)', callback); 可以用于监听 ...

  10. 【C++/实验三】类和对象

    1.定义一个矩形类,有长,宽两个属性,有成员函数计算矩形的面积. 在该矩形类中,我做了5个主要的测试. 构造函数带默认值参数,利用默认值参数计算矩形面积:rectangle(double x=2.0, ...