![](/img/trans.png)
[英]Python - TypeError: object of type 'NoneType' has no len()
[英]Python: TypeError: object of type 'NoneType' has no len()
我从这段 Python 代码中收到错误:
with open('names') as f:
names = f.read()
names = names.split('\n')
names.pop(len(names) - 1)
names = shuffle(names)
f.close()
assert len(names) > 100
错误:
Python: TypeError: object of type 'NoneType' has no len()
断言语句抛出这个错误,我做错了什么?
shuffle(names)
是就地操作。 放下作业。
此函数返回None
,这就是您出现错误的原因:
TypeError: object of type 'NoneType' has no len()
在您希望使用它之前,您不需要将names
分配给list
或[]
或其他任何东西。
使用列表理解来制作名称列表会更整洁。
shuffle
修改您传递给它的列表。 它总是返回None
如果您使用的是上下文管理器( with...
),则不需要显式关闭文件
from random import shuffle
with open('names') as f:
names = [name.rstrip() for name in f if not name.isspace()]
shuffle(names)
assert len(names) > 100
这样做的目的是什么
names = list;
? 另外,不;
在 Python 中是必需的。
你想要
names = []
要么
names = list()
在你的程序开始而不是? 尽管给定了您的特定代码,但此语句不需要创建此names
变量,因为您稍后会在从文件中读取数据时这样做。
@JBernardo 已经指出了代码的另一个(也是更主要的)问题。
我遇到了这个问题,但是在将对象更改为 str 之后,问题就解决了。 str(fname).isalpha():
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.