当前位置: 首页 > 知识库问答 >
问题:

提供不存在的目录的os.walk

孔俊捷
2023-03-14

我有一个文件夹,其中有对应于10个不同类的子文件夹,这些子文件夹的名称是我的标签。我想出了以下代码来将图像读入Numpy数组并保存标签。

import numpy as np
import pandas as pd
import cv2
import glob
import os

x=np.empty([28,28])
y=np.empty([1,0])

for root, dirs, files in os.walk("filepath"):
    for roots in root:
        os.chdir(roots)
        images = np.array([cv2.imread(file) for file in glob.glob(roots+"/*.jpg")])
        num_of_images=images.shape[0]
        if num_of_images == 0:
            continue
        else:
            x = np.concatenate((x,images),axis=0)
            labels = np.empty([num_of_images,1])
            labels = labels.astype(str)
            #labels = get from last part of file name in roots
            #y=np.concatenate((y,labels),axis=0)

我得到的错误是

os.chdir(root)FileNotFoundError:[Errno 2]没有这样的文件或目录:“U”

当Iprint(root)时,它会给出正确的子文件夹路径。如何处理此错误?

编辑:通过删除根目录中的根目录的使其正常工作,因为os.walk为根目录提供目录路径的每个目录返回一个3元组。


共有3个答案

缪风史
2023-03-14
匿名用户

root将是一个字符串;当前目录的名称os.walk

for roots in root:

将迭代该字符串<代码>根将在上迭代一个字符os.chdir(某些字符)将不起作用。

虞承泽
2023-03-14

其他人已经指出了问题所在,因此我不再重复。我只想补充一点,您应该使用

help(os.walk)

或者,在询问问题之前,在解释器内部,任何函数都不能像您期望的那样工作。

处理此错误的方法如下:

import os

for root, dirs, files in os.walk(path):
    for thedir in dirs:
        p = os.path.join(root, thedir)
        os.chdir(p)
衡安晏
2023-03-14

正如os.walk()上的文档所说,它返回的每个3元组中的第一项是字符串。同样地,对于root中的根:迭代字符串的字符。您需要仔细阅读什么样的数据结构os.walk()返回并相应地重新构造脚本。

 类似资料:
  • 问题内容: 我试图建立持续集成与上一个 项目 构建它时,出现以下错误: 以下是我的詹金斯配置的一部分: 我的机器是 我尝试了以下方法: 认为这是一个权限问题,因此在sdk目录中使用chmod -R 777 仔细检查了in 文件(它指向)。 从jenkins配置中删除了添加回来的env变量(这无济于事)。 当我用谷歌搜索时,我发现有人面临同样的问题。提供的解决方案如下: 解 这很可能是因为您要覆盖A

  • 我目前正在为文件管理服务器开发RecycleBin组件。删除文档时,将从多个位置删除所有版本。出现这种情况时,所有文件夹路径将被删除到重复字符串dp\u original\u folder\u paths。 我想在文件夹路径不存在时创建它。 这是我当前的代码。第一部分检查文件是否存在,如果没有创建它。第二部分显示文档被重新链接到文件夹。 给出的输出为 创建目录:\EAM\sbotest 已创建目录

  • 我已经阅读了关于如何在反向代理后为springdoc提供服务的文档(https://springdoc.org/index.html#how-can-i-deploy-springdoc-openapi-ui-behind-a-reverse-proxy)并检查了所有关于该主题的问题,但仍然存在问题。 我在nginx的子目录中提供spring boot(2.6.2版本)应用程序: 我还按照文档配置

  • 我们有一个名为的实体,它与实体有OneToOne关系。

  • 硒2.41,Mac_OSX=10.8.5,Safari=6.0.5 提前致谢

  • 我曾经遇到过一个关于颤振的问题,我不得不下载jdk。我给了它一个路径D:/jdk,但随后我创建了一个新分区,并在C:\Program Files\Java\jdk-16.0.1上再次下载了它。现在,当我在Visual Studio代码中运行应用程序时,出现一个错误: 失败:构建失败,有一个异常。 > 错误:提供的javaHome必须是有效的目录。您提供了:D:\jdk 尝试:使用--stacktr