python:os.chdir - 递归错误

时间:2017-05-22 11:20:05

标签: python

我想遍历一个包含3个文件夹的目录,每个文件夹都包含图像。结构是这样的:

- src
-- main.py
- data
-- train
--- Type_1
--- Type_2
--- Type_3

我的代码是这样的:

for t in [1, 2, 3]:

    #load_files
    os.chdir("../data/train/Type_" + str(t))
    files = glob.glob("*.jpg")
    no_files = len(files)

    #iterate and read
    for n, file in enumerate(files):
        try:
            print (file, t, "-files left", no_files -n)

        except Exception as e:
            print(e)
            print(file)

但是在完成 Type_1 的迭代后,我收到一条错误消息:

 Traceback (most recent call last):
  File "C:/Users/joasa/src/main.py", line 33, in <module>
os.chdir("../data/train/Type_" + str(t))
 FileNotFoundError: [WinError 3] The system cannot find the path specified: '../data/train/Type_2'

2 个答案:

答案 0 :(得分:2)

请参阅@ John的答案以获得更合适的方法 - 除非您确实需要,否则不要if (mode.equals("string"))

我觉得我的回答仍有一定的相关性,所以我要离开了 - 见下文。

你正在使用相对路径,这可能会在这种情况下遇到麻烦。

跟随下面(它不会起作用):

  • chdir()
  • /home/joasa/my_project/
  • /home/joasa/data/train/Type_1/
  • /home/joasa/data/train/data/train/Type_2/

我建议您在绝对路径上执行此操作,如下所示:

/home/joasa/data/train/data/train/data/train/Type_3/

答案 1 :(得分:2)

请勿使用chdir()更改整个程序的工作目录。只需直接传递路径:

glob.glob(os.path.join("..", "data", "train", "Type_{}".format(t), "*.jpg"))