属性错误:next()

2023-11-22

我想使用循环一层深度next() with os.walk

我的代码的关键行:

for root, dirs, files in os.walk(dir).next(1): 

Error:

AttributeError:“生成器”对象没有属性“下一个”

我尝试使用.next(x)替换旧的next()[1]正如社区所建议的,但这也行不通。


你使用的是python3。在python3中next()方法被替换为__next__。 这些方法做not接受任何论点(即a.__next__(1)是一个错误)。 他们通过以下方式推进迭代器one。要通过更多元素来推进它,请调用next反复。

如果您想将迭代器推进一次,我建议使用next内置函数:

>>> L = (x for x in range(10))
>>> next(L)
0
>>> next(L)
1

注:next我相信python2.6中添加了内置函数,因此即使在python2中也可以安全使用。

However,在您的代码中调用没有意义next根本不。你想用它实现什么目标?

Doing:

for root, dirs, files in next(os.walk(dir)):

会引发错误,因为next返回第一个元素os.walk,这是一个三元素元组,包含字符串列表。但是for循环将迭代tuple,尝试将单个列表解压缩为root, dirs, files。 如果任何目录的文件/子目录多于或少于 3 个,则代码将失败。

If您只想跳过必须调用的第一个目录next分别地:

iterable = os.walk(directory)
next(iterable)   # throw away first iteration
for root, dirs, files in iterable:
   #...

If正如 Martijn 推测的那样,您只想在目录上进行迭代,那么您无需执行任何特定操作。根本不使用root and files循环中的变量。在这种情况下,我建议将它们重命名为_,它经常被用来表示我们所需要的变量must分配,但根本不使用:

for _, dirs, _ in os.walk(directory):
    # Work only on "dirs". Don't care for "_"s

If你想先吃掉n可迭代的元素,您可以使用itertools.islice and collections.deque快速完成且不消耗内存:

from itertools import islice
from collections import deque

def drop_n_elements(n, iterable):
    deque(islice(iterable, n), maxlen=0)

然后将其用作:

iterable = os.walk(directory)
drop_n_elements(N, iterable) # throw away first N iterations
for root, dirs, files in iterable:
    # ...

我突然想到有一种更快、更简单的方法来删除可迭代对象的前 n 个元素:

def drop_n_elements(n, iterable):
    next(islice(iterable, n, n), None)

它比使用稍微快一些deque(..., maxlen=0)因为它只调用一次next的方法islice.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

属性错误:next() 的相关文章

随机推荐

  • 如何捕获SQLServer超时异常

    我需要专门捕获 SQL Server 超时异常 以便可以以不同的方式处理它们 我知道我可以捕获 SqlException 然后检查消息字符串是否包含 Timeout 但想知道是否有更好的方法来做到这一点 try some code catc
  • 将表单移至特定屏幕

    我试图弄清楚如何将指定的 System Windows Forms Form 移动到主屏幕以外的另一个屏幕上 我有一个带有可用屏幕列表的组合框 用户可以在其中选择他喜欢的屏幕 并且我的应用程序应该将其窗口之一移动到该屏幕上 我的笔记本电脑上
  • 通过从 Javascript 中的特定日期减去 X 天数来查找日期

    我想通过从 JavaScript 中的特定日期减去 X 天数来查找日期 我的 JavaScript 函数接受 2 个参数 一个是日期值 另一个是需要减去的天数 例如 我将我的参数日期传递为 2009 年 7 月 27 日 将另一个参数传递为
  • C++11:g++-4.7 内部编译器错误

    以下代码 include
  • 在哪里可以找到 Windows mysql 服务器的 my.ini 文件?

    同样的问题一次又一次地重复 我是另一个重复这个问题的人 我已经设置了我的 mysql 服务器 它的位置是 C Program Files MySQL MySQL Server 5 5 但我无法在上述路径中找到 my ini 文件 当我输入命
  • NPM package.json 文件的主要用途是什么?

    我读自here如果人们通过 npm 安装您的项目 则 package json 文件中的依赖项允许人们安装依赖项 最后 dependency字段用于列出所有依赖项 您的项目可在 npm 上找到 当有人安装你的 通过 npm 进行项目 列出的
  • 使用 MVC 属性路由的每个控制器有多个 RoutePrefix?

    通过新的 MVC 属性路由 我知道您可以分配多个Route属性为单个ActionResult 但我正在寻找一种方法来做同样的事情RoutePrefix等级 我有一个控制器 在每个操作中 都应该可以通过三种途径访问 Games Title C
  • 在 UserControl 中使用依赖属性的 wpf 问题

    我制作了一个用户控件 该控件每隔几秒就使用来自串行端口的数据更新一次 这个 UserControl 应该非常简单 由一个用于字段名称的 Label 和另一个包含字段值的 Label 组成 我说它should很简单 但是行不通 它根本不更新
  • 使用 youtube v3 API 检索 youtube 播放列表中的所有视频

    我正在使用 youtube v3 API 检索播放列表的视频并获得 50 个项目 此链接没有任何问题 但视频数量是 100 而我只获得 50 我怎样才能获得接下来的 50 个项目 我试过起始索引但它不适用于 v3 API 任何帮助表示赞赏
  • 使用 CSS 强制纵横比在 Safari 上不起作用

    以下代码在 Firefox 和 Chrome 中运行良好 但在Safari 在 Mac 和 iPad 上测试 http jsfiddle net eFd87 div div img src http farm3 staticflickr c
  • 获取用户 Xbox 成就列表?

    有没有办法从 Xbox 获取用户的成就列表而不处理屏幕抓取等 网站如何喜欢http www trueachievements com做吗 他们绝对不是屏幕抓取 因为他们没有我的 Live ID 凭据 我知道 Xbox LIVE 社区开发者计
  • 如何获取包中 setup.py (setuptools) 中定义的版本?

    我怎样才能获得定义的版本setup py从我的包裹中 对于 version 或其他目的 询问已安装发行版的版本字符串 要在运行时从包内检索版本 您的问题实际上是在问什么 您可以使用 import pkg resources part of
  • 如何在 VSCODE 终端中实现平滑滚动?

    我正在 VSC 中工作并编写 Nodejs 我在长终端输出中遇到滚动问题 如果我使用滑块 在终端右侧滚动滑块会走太多行太快 所以 问题是 我们是否有集成终端中的平滑滚动选项可以轻松地用箭头逐行读取输出 或者我们必须使用另一个外部终端 谢谢
  • 未找到派生类中具有相同名称但不同签名的函数

    我有一个具有相同名称的函数 但在基类和派生类中具有不同的签名 当我尝试在从派生类继承的另一个类中使用基类的函数时 我收到错误 请看下面的代码 class A public void foo string s class B public A
  • JQuery 动画边框而不移动 div

    我想通过首先在 mouseenter 上将其边框加粗 5px 然后在 mouseleave 上将边框减小 5px 来对 div 进行动画处理 棘手的部分是我不希望 div 看起来像在移动 如果您只是对边框进行动画处理 整个 div 看起来会
  • 如何创建接受用户输入的 Siri Intent

    我创建了一个自定义 Intent 其参数如下 我已经捐了 let intent PlayIntent intent color color let interaction INInteraction intent intent respon
  • Silverlight HTTP POST 几个变量,最简单的示例(最少的代码)

    您好 我想将一些数据从 silverlight 发布到网站 我发现了以下内容link它有效 然而 这个例子太复杂了 看得我眼睛疼 另外 Flex 示例更干净 更少的代码 我想说一定有更好的解决方案 供参考 我们发布 2 个变量 字符串 并读
  • 访问 Bottlepy after_request 挂钩中的响应对象

    我有以下网络应用程序 import bottle app bottle Bottle app route ping def ping print pong return pong app hook after request def aft
  • IndexedDB 性能和 IndexedDB 与 WebSQL 性能比较

    WebSQL 和 IndexedDB 都是用于在 Web 浏览器中访问 CRUD 底层嵌入式数据库的 DB API 如果我没猜错的话 这就像用于访问 CRUD 任何客户端服务器数据库 如 Oracle 等 的 SQL 在许多情况下 同一浏览
  • 属性错误:next()

    我想使用循环一层深度next with os walk 我的代码的关键行 for root dirs files in os walk dir next 1 Error AttributeError 生成器 对象没有属性 下一个 我尝试使用