繁体   English   中英

Python:TypeError:'NoneType' 类型的对象没有 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM