首页 > 编程语言 >python错误总结(常更)

python错误总结(常更)

时间:2022-11-22 12:04:54浏览次数:38  
标签:总结 -% obj 错误 python print report json date


  1. AttributeError: ‘set’ object has no attribute ‘items’
    出错原因是在http请求的header里,应该用冒号而不是逗号
//wrong
headers={
'Content-Type', 'application/json'
}
//ok
headers={
'Content-Type': 'application/json'
}

//wrong
headers={
'Content-Type', 'application/json'
}
//ok
headers={
'Content-Type': 'application/json'
}

2.TypeError: not enough arguments for format string
出错原因是在占位符替换时的替换对象,应该是一个元组

//wrong
key = '%s-%s-%s' % report_date[0:4], report_date[4:6], report_date[6:]
//ok
key = '%s-%s-%s' % (report_date[0:4], report_date[4:6], report_date[6:])

//wrong
key = '%s-%s-%s' % report_date[0:4], report_date[4:6], report_date[6:]
//ok
key = '%s-%s-%s' % (report_date[0:4], report_date[4:6], report_date[6:])

3.dict is an unmarshal type
出错原因是 requests包的post请求data必须放一个json化好的数据,而不是数据本身

buf = {'username':'fw'}
//wrong
request.post('www.baidu.com',headers={'Content-Type':'application/json'},data=buf)
//ok
request.post('www.baidu.com',headers={'Content-Type':'application/json'},data=json.dumps(buf))

4.‘dict’ objectt has no attribute ‘x’
出错原因: 平时写go时,{}指代的就是对象,而python里{}指代字典,字典的成员访问不存在点.,只有对象可以通过点.访问成员

obj = {'username':'fwe'}
# wrong
print(obj.username)
# ok
print(obj.get('username'))
print(obj.get('username',''))
print(obj['username'])

相比之下,python里的对象长这样:

class T:
__init__(self,arg):
this.arg =arg

# 使用时
t = T('xxx')
print(t.arg)

还有其他区别比如:
print(t)和print(obj)
前者输出Object(T),后者输出{‘username’:‘fwe’}
type(t)和type(obj)
这个输出也是不同的,答案就不说了自己测测

5.关于时间类型的格式化失效的问题
正确的写法和错误的写法:

# wrong
print(datetime.today().strftime('%y-%m-%d %H:%m:%s'))

# ok
print(datetime.today().strftime('%Y-%m-%d %H:%M:%S'))

6.去除字符串两边空格

# wrong
str.strip(' time ')

# ok
' time '.strip()

7.获取body,param,query三种参数

@action(methods=('get',), detail=False, url_path='invite/relative')
def get_invite_relative(self, request, *args, **kwargs):
# query www.baidu.com?keyword=xxx
keyword = request.query_params.get('keyword', '')
# body {'name':'ft'}
name = request.data.get('name','')
# param invite/:id/relative
id = kwargs['id']

8.时间转换:

# reg_time是date或者datetime类型
row.reg_time.strftime('%Y-%m-%d %H:%M:%S'),
# reg_time是string类型
parser.parse(reg_time).strftime('%Y-%m-%d %H:%M:%S')

9.整型除法和地板除法

print(2/8) # 0.25
print(2//8) # 0
  1. ​execute() takes from 2 to 3 positional arguments but 5 were given​​​ 原因是 cursor.execute(sql, arg1,arg2,arg3) 这样写是错误的
    应该写成 cursor.execute(sql, [arg1, arg2, arg3])
  2. 打日志:
import logging
import logging.config
...
logging.basicConfig(level=logging.DEBUG,
format='[%(asctime)s] %(levelname)s [%(funcName)s: %(filename)s, %(lineno)d] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filemode='a')
logging.error(info)
logging.info(msg)
  1. 通过反射拿到class内部字段,如何区分函数和字段
def IfFunc(obj):
return hasattr(obj,'__call__')


标签:总结,-%,obj,错误,python,print,report,json,date
From: https://blog.51cto.com/u_11553781/5877566

相关文章

  • Python工具箱系列(十五)
    前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非......
  • [Python] 多线程 概念 使用
    python多线程1.线程的概念线程是CPU分配资源的基本单位。当一程序开始运行,这个程序就变成了一个进程,而一个进程相当于一个或者多个线程。当没有多线程编程时,一个进程......
  • 使用python中urllib.request.Request()来构建ua
    1.代码案例=构建http请求头#coding=utf-8importurllib.requestimporturllib.parseurl="http://www.baidu.com/"headers={'User-Agent':'Mozilla/5.0(WindowsNT6......
  • python使用httpHandler处理请求案例
    #coding=utf-8#HTTPHandler&opener#更高级一些功能,可以高仿模拟浏览器importurllib.requestimporturllib.parseurl="https://www.baidu.com/";handler=urllib.requ......
  • python中urllib.request对象案例
    刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊!什么是Urllib库?urllib库是 ​​Python​​ 内置的HTTP请求库。urllib模块提供......
  • 记录今日错误,一个接口代码篇幅过长时一定得注意逻辑顺序
    今日写收藏品转赠逻辑时出现了错误,导致正常的数据在数据库查不出来,于是动手排查原因。一开始考虑可能是sql有问题,于是直接在数据库中写sql,发现可以查询到对应的数据,但是在i......
  • 单元测试中常见错误
    单元测试中常见错误单元的常见错误一般出现在5个方面:代码的稳定、易读、规范、易维护、专业。因此,单元测试的关注的重点有5点:单元接口、局部数据结构、边界条件......
  • ffmpeg合并m3u8 ts key文件 解决Invalid data found when processing input错误
    首先我先说明一下我的使用场景和错误原因:我使用IDM从网站中批量下载ts文件,然后下载对应的一个.m3u8文件(ts文件列表和加密信息的描述)和一个key.key文件(秘钥)。以上文件全部......
  • 用 python 和 java 实现线性代数计算(1)—— 矩阵基本操作
    参考:《机器学习算法框架实战:Java和Python实现》python实现主要是调用NumPy库做的;java实现基本没有调库文章目录​​1.说明​​​​1.1程序组织​​​​1.2数据结构​​......
  • 极客编程python入门-切片
    切片取一个list或tuple的部分元素是非常常见的操作。>>>L=['Michael','Sarah','Tracy','Bob','Jack']>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']Python提......