python运行中常见错误总结
2022-11-30 本文已影响0人
软件开发技术修炼
运行python程序时,经常会遇到一些常见的错误,每次都会进行baidu搜索,故总结以便尽快排查。
错误一:AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘;
错误属性:“nonetype”对象没有'xxx'属性
一、Nonetype
类型
首先了解:
- NoneType类型只有一个值
None
.
-
Nonetype
类型不支持任何运算也没有内建方法
二、报错的原因
Nonetype类型只有一个None,反推也就是出现问题的语句中,含有了 None这个变量。而根据前面知道,None是没有任何内建方法的,从而也就没有了任何属性。
三、查找变量为None
的原因
变量为None
的原因常常在于…
3.1 读取文件中的数据不成功~~filepath
文件路径不正确
3.1.1 文件路径中的文件夹名称错误
3.1.2 文件名路径中的特殊符号的中英文错误
3.1.3 文件名的格式后缀错误,比如.png–>,jpg
检验方法:
os.path.exists(filepath)
相对路径的使用中…
./和../使用错误
检验方法:
os.getcwd()获得当前python的工作路径
四、最终检验结果:
如上检查了xmind文件的路径,都无问题:
检查路径中有个文件名中有空格,去掉,仍有问题;
然后重新复制一份xmind文件到该文件夹,运行代码无问题;
考虑到文件名包含apitestcase,于是换了中文名字仍不行;
难道是xmind文件内容存在错误,修改了,仍不行;
最后,把xmind文件在本地xmind打开,重新保存了下,问题解决。
【最终,我只能说下次遇到这种问题打开xmind重新保存下试试】
错误二:TypeError: count_case() takes 1 positional argument but 2 were given
问题的起始:本来代码是这样,正常运行,然后想着为啥要多此一举弄二个函数呢
def get_story(self):
out = xmind_to_dict(self.xmindfile)
story = out[0]['topic']['topics']
return story
# 对xmind文件进行内循环判断,需传参
def count_case(self, story):
# count1 = 0
for i in story:
if "topics" not in i.keys() and "title" in i.keys():
self.count1 += 1
# print(self.count1)
else:
for k,v in i.items():
if "topics" == k:
self.count_case(v)
else:
continue
return self.count1
然后就优化成下方这样,无需传参,一步到位,然而一直在报错
# 对xmind文件进行内循环判断,需传参
def count_case(self):
out = xmind_to_dict(self.xmindfile)
story = out[0]['topic']['topics']
for i in story:
if "topics" not in i.keys() and "title" in i.keys():
self.count1 += 1
# print(self.count1)
else:
for k,v in i.items():
if "topics" == k:
self.count_case(v)
else:
continue
return self.count1
报错如下
最终发现,44行,因内层循环遍历,传了一个v,实际上函数中未定义。