【问题标题】:How to resolve an error 'list' object has no attribute 'iterdi'如何解决错误“列表”对象没有属性“iterdi”
【发布时间】:2021-01-28 21:25:08
【问题描述】:

我正在处理图像数据集。当我写 for 循环时,我发现以下错误。那是

AttributeError: 'list' object has no attribute 'iterdi'

排队

for class_folder_path in DATA_FOLDER.iterdir():

我的代码:

 max_print_subfolders = 4
max_print_files_per_folder = 3
subfolder_counter = 0
for class_folder_path in DATA_FOLDER.iterdir():
    subfolder_counter += 1
    if subfolder_counter > max_print_subfolders:
        print(str('/content/DATA_FOLDER') + "more subfolders in this folder...")
        break
    file_counter = 0
    for image_path in class_folder_path.glob("*.png"):
        file_counter += 1
        if file_counter > max_print_files_per_folder:
            print(str(class_folder_path / '...') + "more files in this folder...\n")
            break
        print(image_path)

错误:AttributeError: 'list' object has no attribute 'iterdi'

【问题讨论】:

  • 你确定错误不是object has no attribute 'iterdir'吗?或者您在实际代码中使用了iterdi 而不是iterdir
  • DATA_FOLDER 未在您的示例中定义。
  • DATA_FOLDER 显然是 list,而不是 Path 对象。仔细检查您的数据。
  • 是的,它是 iterdir @scothunter
  • listdir 返回一个列表,而列表没有那个方法。你是说for class_folder_path in DATA_FOLDER:吗?

标签: python python-3.x list loops for-loop


【解决方案1】:

什么是DATA_FOLDER?这应该是您希望目录在其中的路径(指向目录内容)。

iterdir() 产生目录内容的路径对象。

from pathlib import Path

path = Path('D:/')
for _dir in path.iterdir():
    print(_dir)

【讨论】:

  • 请不要使用python语言的关键字作为变量名。这可能会导致一些非常糟糕的问题。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2019-09-08
  • 2020-10-25
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
相关资源
最近更新 更多