1

我正在尝试列出当前文件夹中的所有文件以及当前文件夹文件夹中的文件。这就是我一直在做的:

import os


def sendFnF(dirList):
        for file in dirList:

                if os.path.isdir(file):
                        print 'Going in dir:',file
                        dirList1= os.listdir('./'+file)
#                       print 'files in list',  dirList1
                        sendFnF(dirList1)
                        print 'backToPrevDirectory:'

                else:
                        print 'file name is',file




filename= raw_input()
dirList= os.listdir('./'+filename)
sendFnF(dirList)

这段代码确实让我进入了当前目录的文件夹。但是当涉及到子文件夹时;它将它们视为文件。知道我做错了什么吗?在此先感谢,中士。

4

1 回答 1

1

在路径之前./添加基本上没有任何作用。此外,仅仅因为您使用目录路径递归调用函数并不会更改当前目录,因此不会更改.文件路径中的含义。

你的基本方法是正确的,去一个目录使用os.path.join(). 最好重组您的代码,以便您listdir()在开始时sendFnF()

def sendFnF(directory):
    for fname in os.listdir(directory):
        # Add the current directory to the filename
        fpath = os.path.join(directory, fname)

        # You need to check the full path, not just the filename
        if os.path.isdir(fpath):
            sendFnF(fpath)
        else:
            # ...

# ...
sendFnf(filename)

也就是说,除非这是一个练习,否则你可以使用os.walk()

于 2013-10-13T19:10:39.663 回答