使用os.walk()

时间:2018-05-02 20:55:22

标签: python

这是我第一次使用Python,我在以下代码段中找到中间目录路径时遇到了一些麻烦:

目前,当将目录参数传递给'stroll'时,该函数似乎进入thePath,观察每个子目录类型,并且如果是类型目录则下降。代码不是我的,似乎嵌套的for循环遍历常规文件列表,因此循环不会知道每个元素所属的目录。

当前输出

../Sample_Cases_Asg2/output.txt
../Sample_Cases_Asg2/file2
../Sample_Cases_Asg2/file1
../Sample_Cases_Asg2/output.txt
../Sample_Cases_Asg2/file2
../Sample_Cases_Asg2/file1
../Sample_Cases_Asg2/output.txt
../Sample_Cases_Asg2/file2
../Sample_Cases_Asg2/file1
../Sample_Cases_Asg2/output.txt
../Sample_Cases_Asg2/file2
../Sample_Cases_Asg2/file1

所需的输出

../Sample_Cases_Asg2/sample1/output.txt
../Sample_Cases_Asg2/sample1/file2
../Sample_Cases_Asg2/sample1/file1
../Sample_Cases_Asg2/sample2/output.txt
../Sample_Cases_Asg2/sample2/file2
../Sample_Cases_Asg2/sample2/file1
../Sample_Cases_Asg2/sample3output.txt
../Sample_Cases_Asg2/sample3/file2
../Sample_Cases_Asg2/sample3/file1
../Sample_Cases_Asg2/sample3/output.txt
../Sample_Cases_Asg2/sample3/file2
../Sample_Cases_Asg2/sample3/file1

实施

   def stroll(thePath):
    deeper = []
    for root, dirs, files in os.walk(thePath):
            for file in files:
                    print (os.path.join(thePath, file))

此外,我是社区的新手,因此非常感谢任何关于如何改进我的问题的简明输入。

1 个答案:

答案 0 :(得分:1)

如果您将First放入shell中,您会看到:

  

对于以顶部为根的目录树中的每个目录(包括顶部   本身,但不包括'。'和'..'),产生一个3元组

Vector2 cheapestCellPosition = openCells
    .OrderBy(cell => GetCostToTarget(cell, targetPosition) + 
                     GetCell(cell).Cost.GetValueOrDefault())
    .First();
     

dirpath是一个字符串,即目录的路径。 dirnames是一个列表   dirpath中子目录的名称(不包括“。”和“..”)。   filenames是非目录文件名称的列表   dirpath。 请注意,列表中的名称只是名称,没有路径   组件。

所以你需要:

help(os.walk)

这很烦人。