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

 新葡亰编程     |      2019-12-17

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

简介:

模块:用一坨代码实现了某个功能的代码集合。分为三种:

  • 自定义模块
  • 第三方模块
  • 内置模块

解决办法:

python去找模块的路径

图片 1

其中,第三方模块安装的位置

图片 2

提示:第三方模块名不能和内置以及第三方模块重名

导入模块:from lib.account import login

 

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

添加sys.path路径:

图片 3

 

示例如下:

os模块(和系统相关)

os.stat(“path“)  获取文件目录信息

图片 4

os.path.dirname(path)  获取文件所在的目录

图片 5

os.path.exists(path)  如果path存在则返回true,否则返回false

图片 6

os.path.join(path1[,path2[,...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

图片 7

 

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())

 hashlib模块:  (加密相关操作)

用户名,密码保存的时候必须加密

md5加密是不可以反解的。

图片 8

因为每个电脑上的md5加密出来的数据都是一样的,所以会被别人获取加密对应的用户名,密码。所以要自己再定制,使md5加密出来的数据只存在自己的电脑上。

图片 9

加密登录注册实例:

图片 10

 

 图片 11

 

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

内置的模块

图片 12

__doc__   是py文件的注释

图片 13

__file__  #文件本身的路径

图片 14

__package__  当前py文件在哪个文件夹下,如果多个路径用.连接

__cached__  做缓存用的

__name__  (重要)

__name__ == '__main__'的应用:

主文件: 调用函数前,必须加__name__ == '__main__'

 

json序列化  (Json就是字符串)

json.loads  用于将列表、字典、元组形式的字符串,转换为相应的字典,列表,元组(注意报错,格式)

图片 15

图片 16

注意上图的格式,报错。

json.dumps()  将拿到的字典、列表,元组转换为相应的字符串

图片 17

json.dump()  拿到内容再写入相应的文件内

 

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

configparser模块:  (打开,读取特定格式的文件)(默认文件都是字符串)

图片 18

 

 图片 19

 

图片 20

shutil模块(高级文件、文件夹、压缩包处理模块)

图片 21

图片 22

图片 23

 

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

subprocess模块

图片 24

 

logging模块(重要)  (用于便捷记录日志且线程安全的模块)

图片 25

图片 26

图片 27

图片 28

图片 29

 

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())

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

2、join拼接路径

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

 

str = r'd:PHJReporterLOGS'
#报告文件路径
reporPath = os.path.join(str,'report')
isExistPath(reporPath) #创建文件夹

print(reporPath)

imgPath = os.path.join(reporPath,'\Image')
print(imgPath)
上一篇:python进阶(四) windows下虚拟环境使用 下一篇:没有了